포스트

예제는 지문이 아닙니다 [스크랩 글]

원문

https://djm03178.tistory.com/33

진짜 많은 초보자가 실수하는 부분이라 요약과 보충을 넣어 글을 소개하려 합니다.





“설령 예제에서 음수를 보여주지 않았다고 해도 음수를 처리할 수 있는 코드를 작성해야 합니다.”

입력 조건은 예제가 아니라 문제 지문과 입력에 대한 설명에서 얻어야 합니다.



“문제 본문만 보고도 문제를 이해할 수 있다면 예제는 볼 필요도 없습니다.”

예제가 잘 나오는 지 체크하는 것은 구현상의 버그, 혹은 완전히 틀린 논리를 미리 확인하여 틀렸습니다 를 피하기 위해 중요할 수 있습니다.
하지만 입출력 형식을 제외하면, 예제는 아무런 설명을 해주지 않습니다. 그러므로 예제가 맞는데 틀렸습니다 를 받았다면, 예제에 집착할 필요가 없습니다.

특별히 지문 설명이 부족한 문제가 아니라면, 보통은 예제가 없어도 문제가 성립합니다.



스페셜 저지에서, 예제 출력은 모범 답안 프로그램이 실제로 내는 출력이 아닙니다.

원문에는 없지만, 간간히 위의 문제로 고민을 하는 분들이 보입니다.
어떤 문제에서 일반적으로 쓰일 풀이에선 나올 수 없는 출력이 예제 출력에 나왔더라도 문제가 없습니다.

아래와 같은 문제를 예시로 생각합시다.

\(N\) 개의 정수를 가진 수열 \(S\) 와, 어떤 정수 \(K\) 가 주어진다. \(S\)에 포함된 정수 중 \(K\) 보다 큰 정수를 모두 출력하시오. 만족하는 정수가 여러 개라면 출력 순서는 무관하다.

첫번째 줄에 \(N\) 과 \(S\) 가 공백으로 구분되어 주어진다. 그 다음 줄에 \(N\) 개의 정수 \(a_i\) 가 공백으로 구분되어 주어진다.

예제 입력

5 6
4 7 2 10 9

위와 같은 예제 입력에 대해 7 9 10 , 7 10 9 , 9 7 10 등등 총 \(3! = 6\)개의 경우 전부 예제 출력으로 가능합니다.
일반적인 풀이라면 7 10 9 를 순서대로 출력할 것 같지만, 예제 출력이 정답을 만족한다면 그 중 무작위로 보여주더라도 문제 없습니다.


문제 지문은 문제를 푸는데 필요한 모든 정보가 포함되어 있다고 생각합시다. 그러므로 단어 하나하나가 중요할 수 있으니, 특히 틀렸습니다를 받은 경우라면 꼼꼼히 정독하는 것이 좋습니다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.