이번 주에는 골드 문제가 2문제가 나왔네요.
각각 그리디, 이분 탐색이었는데 그리 어렵진 않았던 것 같습니다.
A. 긴급 회의
단순 구현 문제입니다.
1 |
|
B. 문자열 줄이기
사전 순으로 가장 앞서는 문자는 순서대로 a, b, c, d, … 입니다.
문자열의 맨 앞에서부터 훑으면서 해당하는 문자를 지워주는 작업을 순서대로 진행하면 됩니다.
실제로 배열에서 지우는 것은 $O(N)$이므로 대신 지웠다는 표시만 해 두고 나중에 출력할 때 무시하면 됩니다.
1 |
|
C. 주유소
$i$번째 주유소의 가격을 $p[i]$라 합시다. $i$번째 주유소에 도착했을 때, 처음으로 $p[i] > p[j]$를 만족하는 $j$가 나올 때 까지 가는 데 필요한 양 만큼 구입하면 됩니다.
다시 말해 더 싼 곳에 도착할 때 까지 필요한 양 만큼 사면 됩니다.
1 |
|
D. 병든 나이트
$n = 1$이면 움직일 수 없습니다. 따라서 답은 $1$입니다.
$n = 2$이면 $1$칸 위, 아래로 움직이는 것만 반복할 수 있습니다. 오른쪽으로 $2$칸씩 이동하므로 방법 제약이 없는 경우 가능한 이동 횟수는 $\dfrac{m-1}{2}$입니다.
따라서 답은 $\min\left(\dfrac{m-1}{2}, 3\right) + 1$입니다.
$m < 7$인 경우 $4$가지 이동 방법을 모두 사용할 수 없습니다. 따라서 $1$칸 오른쪽으로 가는 방법만 사용하면 되고, 답은 $\min\left(m-1, 3\right) + 1$입니다.
이외의 경우, 각 이동 방법을 한번씩 사용하고(4), 그때 이동한 만큼의 열 수를 빼 준 뒤(-7) 맨 첫 칸 1을 더해주면 됩니다. 따라서 답은 $4 + m - 7 + 1 = m - 2$입니다.
1 |
|
E. Arkain 대시보드
마지막으로 사용한 시간, 고정 여부를 저장한 후 정렬하면 됩니다.
트리 맵은 문자열 비교 연산 특성상 느리기 때문에 시간 초과를 받습니다. 해시 맵을 사용해야 합니다.
1 |
|
F. 트리 나라 관광 가이드
노드 $v$의 부모를 $p[v]$라 합시다.
$a$번째 도시까지 탐색했을 때, $a+1$번째 도시의 부모가 존재한다면 무시하고, 그렇지 않다면 마지막으로 탐색한 $a$번째 도시 노드를 부모 노드로 지정해주면 됩니다.
1 |
|
G. 흙길 보수하기
$k$번째 물웅덩이까지 보수했다고 합시다. 그렇다면 $k+1$번째 물웅덩이를 보수할 때 시작지점보다 왼쪽을 보수할 필요가 없습니다. 따라서 모든 물웅덩이를 시작 지점부터 보수해주되, 마지막으로 보수한 끝 지점을 저장해서 웅덩이의 일부가 이미 보수된 경우를 처리해 주면 됩니다.
1 |
|
H. 블랙 프라이데이
물건 3개를 고르는 조합은 2개 조합 + 이분 탐색으로 해결할 수 있습니다.
1 |
|