일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- graph modeling
- Dag
- implementation
- Eulerian path
- 백준
- backtracking
- Eulerian circuit
- Shortest path
- Algospot
- BOJ
- hashing
- POJ
- DynamicProgramming
- Segment Tree
- dynamic programming
- CS Academy
- Euler path
- BFSDFS
- Euler circuit
- BST
- graph
- disjoint-set
- scc
- mathematics
- bitmask
- flows
- GCD
- Sieve_of_Eratosthenes
- Greedy
- Cycle detecting
- Today
- Total
그냥 하는 노트와 메모장
제1회 온코더 공식 코딩테스트 잡담 및 풀이 본문
새로 등장한 코딩테스트 대행 스타트업 사이트다.
문제를 보아하니 그렇게 나쁘지 않은 난이도 및 구성이라 시험을 치뤄봤다. ㅎㅎ 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를 저장하는 또 다른 인접리스트를 저장하고, 두 번의 다익스트라를 통해 답을 도출해낼 수 있다.
'Contest, Other tests' 카테고리의 다른 글
카카오 코드 페스티벌 2017 예선 해설(Ongoing) (2) | 2019.01.11 |
---|---|
2018 프로그래머스 서머 코딩 해설 (2) | 2018.08.06 |
카카오 코드 페스티벌 2017 본선 해설(Ongoing) (4) | 2018.08.06 |
Codeforces Round #462 (Div. 2) (0) | 2018.02.19 |
제1회 천하제일 코딩대회 본선 (해설 미완성) (0) | 2018.02.04 |