출처 : https://www.acmicpc.net/problem/2072

정답 : https://github.com/stemp12/study/blob/master/acmicpc.net/2016.02/2072.cpp


처음에 이문제에 기교를 부려보려고 했다. 무배열로 풀어보려고했으나, 생각외로 소스가 너무 복잡해져서 포기했다.

먼저 나는 인풋이 들어올때마다 오목판에 돌을 배치하였고 그 돌을 가지고 승부를 판별하도록 설계했다. 

이렇게 해야 누가 먼저 승리하는지 알 수있다.

승부가 결정된 시점부터는 인풋이 들어오면 그냥 들어오는것이지 어떠한 이벤트를 주는건 아니다.

역시 주의해야할점은 승부가 나지 않는 경우가 있고 이때 -1을 출력해야하며, 6개이상의 돌로 이루어지면 그것또한 이긴것이 아니게 된다.

이 부분만 체크해주면 간단히 끝나는 문제이다. 

그리고 이런문제의 특성상 설계를 잘못하면 소스가 하염없이 길어지게 마련이다. 소스가 길어진다는것은 틀릴확률이 기하급적으로 증가한다는 말이기도 하다. 

그렇기 때문에 최대한 함수로 표현하고 깔끔하게 코딩하도록 노력해야한다. 물론 나보다 더 짧게 만든사람도 많다.

좀 더 생각해보면 나도 더 줄일수있을것 같지만 그만하련다.

'Algorithm' 카테고리의 다른 글

[AC] 7562 나이트의 이동  (0) 2016.02.23
[AC] 10989 수 정렬하기 3  (0) 2016.02.23
[AC] 2573 빙산  (0) 2016.02.23
[AC] 2294 동전2  (0) 2016.02.23
[AC] 2513 통학버스  (0) 2016.02.23

+ Recent posts