|
'TopCoder' 카테고리의 다른 글
|
|
ACM-ICPC 이후에 치룬 매치. 참 오래간만에 한꺼번에 정리하는 로그라서 기억이 좀 가물가물 하긴 하다. ㅋ 2008 ACM-ICPC 전후로 내 TopCoder Rating 은 상당한 부진속에 빠져 있었는데, 이번 매치에서는 정말 오래간만에 Level1 을 틀리면서 776 으로 레이팅이 급격히 하락했다 ㅋ 문제들이 평소보다는 좀 어려운 느낌이었다. 룸 12 등, Div 541/1079, Rating 은 776 (-48). Level1 - InverseFactoring ( 182.55 Challenge Succeeded ) 벡터 p 에 어떤 수 N 의 모든 약수들이 주어질 때, N 을 구하는 문제이다. 이때 입력되는 약수들 중에서 1 과 N 은 제외된다. 문제가 아주 심플한데, 사실은 좀 tricky 했다. 이 문제를 틀린 이유는 SRM 당시 접근을 잘못하여, p 의 가장 큰 약수에 2 부터 입력 범위까지 소수들을 하나씩 곱해서 candidiate 숫자를 만든 후, 이 candidate 숫자가 p 의 모든 수에 대해서 나눠지는 첫번째 숫자를 답으로 체크했는데, 사실은 답은 p 에 속한 숫자의 곱으로만 이루어져야 하므로, 소수의 리스트를 뽑아서 곱해보는 것은 전혀 엉뚱한 접근이었던 것이다. 어떤 수 N 의 약수를 a 라 할때, N/a 또한 N 의 약수가 된다. 즉, N 을 구하기 위해서는 두 약수를 곱하면 되는데, 가장 큰 약수를 N 으로 나눌 때 나오는 값은 당연하게도 가장 작은 약수가 된다. 그러므로 이 문제는 간단하게 입력된 p 중에서 가장 큰 원소와 가장 작은 원소를 꺼내서 곱해주면 된다. 첼린지 케이스로 걸린 것은 p = {5} 와 같이 N 이 제곱수 형태로 이루어지는 경우였다. Level2 - CrazyBot ( Opened ) 격좌 좌표에서 동서남북으로만 이동이 가능하며, 이미 이동한 곳으로는 이동하지 않는 경우를 생각해 보자. 총 이동거리가 N 으로 주어질 때, 최종적으로 이동한 위치가 이미 이동한 곳은 한번도 지나지 않았을 경우의 수를 구하는 문제이다. 이 문제에서는 동서남북 으로 이동할 확률이 주어진다. 이런 형태의 문제는 DFS 로 푸는 것이 정형화 된 솔루션 같다. N 이 최대 14 이므로 4^14 경우가 될 수 있는데, 이미 지나온 곳은 다시 방문하지 않으므로 실제로는 경우의 수가 대폭 줄어든다. 동서남북 이동하는 재귀 함수에서 매번 각각의 방향으로 이동할 확률을 곱해서 넘겨주고, 최종적으로 모두 이동했을 때 해당 위치에 있을 확률들을 전부 더하면 답이 된다. 이런 유형은 정말 끊임없는 연습만이 대안인 것 같다. Editorial 보고도 푸는데 한참 걸렸다 ㅋ Level3 - PiecesMover ( Opened ) 5*5 의 격자에서 최대 5 개의 말이 있다. 이 말들이 모두 인접하게 하기 위한 각 말들의 이동 횟수의 합의 최소값을 구하는 문제이다. 입력 사이즈도 그렇고, BFS 로 푸는 것이 딱 보이는 문제이다. 아직 풀지는 않았다. Not Yet. 'TopCoder' 카테고리의 다른 글
|
|
'TopCoder' 카테고리의 다른 글
|
이올린에 북마크하기



