2개의 댓글이 있습니다.
-
-
astein -
이번 Med 문제와 비슷한 문제를 밑에 링크걸어둘께요..
http://algospot.com/zbxe/?mid=editorial&search_target=user_id&search_keyword=astein&document_srl=48797&listStyle=&cpage=
B번 문제입니다 'ㅅ'
15년 전 link
-
-
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
Toivoa
SRM 392에서 0점맞고 에디토리얼 쓰고 1년만에 SRM 에디토리얼 쓰는 Toivoa 입니다.
개인적으로는 TopCoder 시작한지 5년만에 레드를 찍은 SRM이었습니다.
결과는 위와 같았습니다. 한국인 중에 Hard를 푼 사람이 아무도 없었습니다.
[Easy - BestView]
직선 위에 건물들이 있습니다. 건물의 높이가 주어지고, 어떤 건물의 옥상에서 다른 건물들의 옥상이 몇개나 보이는지 알아내는 문제입니다.
[spoiler="해설"]저는 어떤 건물의 옥상에서 다른 건물의 옥상이 몇개나 보이는지는 해당 건물을 중심으로 앞/뒤로 보면서 tangent 값 - (높이 차이) / (거리) - 이 줄어드는 건물이 몇개 있는지 세어보면서 풀었습니다.
이 외에도 ccw를 이용해서 세어보는 등의 방법이 존재합니다.
[/spoiler]
[Med - DoNotTurn]
N*N의 정사각형으로 구성된 미로가 있습니다. (0, 0)에서 시작해서 (N - 1, N -1)의 위치로 가야 하는데, 최소한의 turn을 하는 것이 목표입니다.
[spoiler="해설"]문제에서는 pseudo-random으로 미로를 구성하도록 되어 있습니다. 문제를 제대로 읽지 않고, 미로를 구성하는 단계를 잘못 구현해서 삽질을 많이 했습니다.
미로를 구성한 후에는 전형적인 BFS 문제가 됩니다.
저는 위치와 방향을 queue에 넣고, 해당 방향으로 쭉 가보면서 turn을 하는 경우를 queue에 넣는 식으로 구현하였습니다. 만약 deque를 이용한다면 진행은 deque의 앞에 넣고, 방향 전환은 deque의 뒤에 넣는 식으로 구현할 수도 있습니다. (이 방법은 Astein님의 소스코드를 참조하세요)
[/spoiler]
[Hard - CircularShifts]
같은 길이를 가지는 두 수열 x, y가 있습니다. 두 수열을 임의로 circular shift 하여 x[0] * y[0] + x[1] * y[1] + ... + x[n - 1] * y[n - 1] 의 최대 값을 구해야 합니다.
수열을 circular shift한다는 것은 x'[0] = x[1], x'[1] = x[2], ... x'[n - 1] = x[0] 입니다.
이 문제의 풀이는 JongMan님이 알고계십니다.
15년 전