첫 번째 모의고사를 치루시느라 다들 고생 많으셨습니다! 1차 코딩테스트는 [종합IT서비스기업] 2016년도 코딩테스트 기출문제를 바탕으로 제작되었습니다. 실제 기출 문제를 기반으로 문제 설명과 일부 채점 데이터를 보강하여 진행하였으며, 문제 난이도는 평이한 수준이라고 볼 수 있습니다.
하지만 본 기출 문제를 리뷰하면서 저는 입력되는 값들의 범위를 중요하지 않은 것처럼 가볍게만 언급하고 넘어간다는 점을 주목했습니다. 많은 분들이 이 부분을 간과할 것이라고 예측했는데,
적중했습니다!
아래에 첨부한 도표는 각 응시자의 백분위별 획득 점수를 나타내며, 각 획득 점수는 문항별 획득 점수의 누적으로 표현했습니다.
* 단, 전체 응시자 중 제출이 전혀 없는 참가자는 제외한 결과입니다.
위의 도표로 알 수 있는 결과의 주목 할 점은 아래와 같습니다.
필자 또한 많은 문제를 풀고 대회를 참가해보며 뼈저리게 느낀 점이 하나 있습니다. 몸소 느끼기 전까지는 와닿지 않을 수 있지만, 이 기회에 꼭 유념하시고 시험에 응하셨으면 합니다.
"문제 설명이 짧고 간결하다면 경계해라"
문제가 짧고 간결한 것이 항상 좋은 것만은 아닙니다. 간결해서 가독성은 좋지만 이는 다른 참가자에게도 마찬가지입니다. 오히려 문제에 많은 내용과 제약사항이 명시되어 있다면 그 표현들 하나하나가 힌트이기에 풀이가 더 쉬울 수 있습니다. 바로 다음과 같은 힌트를 얻을 수 있죠.
하지만 문제가 짧으면 이런 내용들이 생략되기 마련이고, 특수하지 않은 일반적인 케이스들이 입력으로 골고루 주어지게 됩니다. 하지만 대부분의 사람들은 문제에 명시되어있지 않은 내용을 자신이 처리하기 편한 방향으로 생각해버리는 경향이 있습니다(즉, 만점받기 쉽지 않다는 이야기죠).
그렇기에 많은 훈련이 필요합니다. 유사한 문제에서 중요하게 처리해야 할 예외적인 경우는 무엇이 있었는지, 그런 내용들이 생략되어 있는지 등을 판단할 수 있어야 하기 때문입니다. 앞서 언급한 것처럼 이번 시험은 문항별 만점자 수가 적고, 많은 분들이 여러 테스트케이스를 조금씩 놓쳤습니다. 그렇기에 각 문제에 대한 해설은 이 부분에 초점을 맞추어서 진행하고자 합니다.