그냥 하는 노트와 메모장

제1회 온코더 공식 코딩테스트 잡담 및 풀이 본문

Contest, Other tests

제1회 온코더 공식 코딩테스트 잡담 및 풀이

coloredrabbit 2018. 8. 13. 11:29

새로 등장한 코딩테스트 대행 스타트업 사이트다.

문제를 보아하니 그렇게 나쁘지 않은 난이도 및 구성이라 시험을 치뤄봤다. ㅎㅎ 7등이 나온걸 보아 아직 난 멀었나보다 싶다.



[ Solution ]

1. 문자열 변환

  그냥 문제 설명 그대로 해주면 되겠다..




2. 해시 M값 구하기

[ 분류 - Sieve of eratosthenes, Binary search ]


1. 주어진 수식을 이용하여 찾아야하는 소수 범위를 한정한다.

2. 한정된 범위 내의 소수를 탐색한다.


한끗 차이로 7번이나 제출해버렸다. 기준점 찾는 부분에서 등호를 조심하자ㅠ





3. 패킷 줄이기


주어진 내용을 그냥 구현하면 된다. 이 문제가 어렵게 느껴진다면 Encoding/Decoding 관련 문서 또는 bitmasking 연습하는 것을 추천한다.




4. 보급품 수송

[ 분류 - Dijkstra/ Bellman-ford/  Shortest path ]


  모든 정점이 하나의 정점으로 올 때의 최단경로와 다시금 돌아갈 때의 최단 경로를 구해야하는 문제다. 문제에서 주어지듯 방향 그래프이기 때문에 u->v라고 해서 v->u가 되지 않을 수 있다.


  간단하게 생각해보자. u->v의 의미는 정점 u에서 정점 v로 갈 수 있는 간선이 있다는 것이다. 그렇다면 역으로 'v에 도착하기 위해선 u를 거쳐서 올 수 있다.'로 표현을 변경할 수 있다. 따라서 각 도시 정점으로 도착하기 위해서는 어떤 정점을 거쳐야하는 문제로 변형시킬 수 있다. 따라서 정부를 나타내는 정점 k에서 돌아가는 것은 기존 간선을 이용하여 처리할 수 있고, 각 도시 정점에서 정부로 오는 최단 경로는 그래프 G내에 있는 모든 간선 E를 역으로 돌려놓는 것이다. (역방향 간선을 말하는 것은 아님.)

  따라서 u->v라는 데이터 들어온다면 u->v를 저장하는 기존 인접리스트 하나, v->u를 저장하는 또 다른 인접리스트를 저장하고, 두 번의 다익스트라를 통해 답을 도출해낼 수 있다.





Comments