A. Tourist

문제를 읽고 따라해보면 보는 곳이 빙글빙글 도는걸 알 수 있다.
출력할 때 입력된 순서대로 정렬해서 출력해야한다는 점만 주의하면 된다. (기본 예제에서 잡아준다)


B. Interception


주어진 연산자의 우선순위대로 식을 전개해보면 (PN * x) ^ (?) = 0의 형태임을 알 수 있다.
x ^ y = 0 이려면 x = 0이고 y != 0 이어야하므로, 일단 x = 0 이어야 하고, ? 부분의 값만 찾아주면 된다.
그런데 x의 값이 정해졌으므로 그냥 대입해서 풀어봐도 되고, 잘 생각해보면 차수의 홀짝에만 영향을 받는다는 사실을 알 수 있다.
(그 이유는 식이 0 ^ 0 ^ 0  ^... ^ 0 의 형태가 되기 때문)


C. Ethan Searches for a String


Ethan이 만든 알고리즘을 분석하면 KMP에서 failure function의 값이 모두 -1인것마냥 돌아간다는 점을 알 수 있다.
그러면 failture function이 -1이 아니고, 다음 문자가 다른 문자열에 대해서는 항상 예제를 만들어 줄 수 있다.
이렇게 만들면 최악의 경우에도 원래 문자열의 길이의 2배를 넘지 않기 때문에 10000의 길이 제한도 생각할 필요가 없다.


참고로 A, B는 쉬워보여서 Go 연습도 할 겸 짰는데, C의 경우는 실수할까봐 자동화된 유닛테스트를 위해서 Go로 짰다.
미리 테스트케이스를 만들어놓고, 풀이를 작성하고 go test 만 치면 자동으로 테스트가 된다. 이걸로 시간을 많이 아꼈다.
Go 써라 꼭 써라


소스 코드: https://gist.github.com/0xrgb/97405525f84609c5f780d49172c3bba1