[Topcoder] SRM446 - div2 - topcoder

250 500은 풀었지만 1000은 풀지 못해서 이번에도 major league라고 할 수 있는 div1에 진출하는 것은 실패하였다.

세 문제 모두 푼다면 블루는 갈 수 있을테고 그 정도면 옐로우도 갈꺼다.
꾸준히 어려운 문제를 시도하다 보면 언젠가는 가겠지.



250은 lower자리수와 upper자리수 사이의 수 중에 n보다 작은 숫자는 모두 몇개인가 하는 문제이다.
n의 제한이 10,000,000 밖에 안되기 때문에 사실 다 돌려도 되지만
10^(lower자리수-1)와 10^(upper자리수)-1 사이의 n보다 작은 숫자를 세면 된다.
lower보다 n이 작으면 0을 그보다 크면 n과 10^(upper자리수)-1을 빼면 된다.







500은 큐브가 주어지는데


이 큐브 위에서 robot이 걸어다니는데 위쪽의 녹색에서 시작해서 방향전환과 앞으로 가는 것 두가지로 다닐 때 모든 명령을 마쳤을 때 어느 위치에 있겠는가 하는 문제이다.

처음에는 오토마타 문제 혹은 그래프 문제가 아닐까 생각했는데 사실은 모든 면이 똑같기 때문에 벗어날 때 마다
반대편으로 넣어주면 모든 문제가 해결된다.







1000은 풀지 못하였는데 하노이 타워 변형문제인데
모든 판의 크기가 같아서 어느 쪽으로든 움직일 수 있는 판이 10개 이하가 있을 때 판 마다 몇번째 기둥으로 가야하는지가 적혀있 을 때 최소로 움직여서 모두 제자리를 찾게 하는 문제이다.

재귀호출로 위의 판을 빈곳으로 이동 시키고, 해당 판이 들어갈 자리를 또 비운 다음 이동 시키는 하노이 기본 원리를 따라서 풀면 될 것 같았는데 스트링으로 입력받는 코딩이 쉽지가 않고 예외가 많아서 코딩을 하다가 시간이 다 흘러갔다.

다시 풀어서 업데이트 해야지...

Leave Comments


profileneoevoke소셜계의 김성모 

Recent Post

Recent Trackback


T-NAVI