출력 형식이 잘못되었습니다라는 판정을 처음 받으면 대개 매우 당황하게 됩니다. 아무리 봐도 눈에 보이는 글자들의 출력은 완벽한데요? 하지만 이 메시지가 의미하는 것은 눈에 보이는 형식이 아니라 눈에 안 보이는, 공백이나 개행과 관련된 형식이 잘못되었다는 뜻입니다.
이와 관련한 질문이 가장 많이 나오는 출처가 별 찍기 시리즈입니다. 별 찍기 - 2 문제를 예로 들어보겠습니다. 다음과 같은 파이썬 코드를 실행해 보면 출력이 언뜻 보기엔 완벽해 보입니다.
n = int(input())
for i in range(n + 1):
print(' ' * (n + 1 - i) + '*' * i)
실행 결과는 https://ideone.com/GRinXF 에서 볼 수 있습니다. 문제의 예제와 똑같아 보이지 않나요? 그런데 이 코드를 그대로 제출하면 출력 형식이 잘못되었습니다 판정을 받게 됩니다. 어디가 잘못되었을까요?
예제 출력과, 출력된 내용을 각각 블록 지정하고 비교해 봅시다.
아하, 예제 출력과 비교했을 때 맨 윗줄에 아무 내용도 출력이 안 된 줄이 하나 더 있고, 매 줄마다 왼쪽 칸에 공백이 하나씩 더 출력되었네요. 채점 프로그램은 한 글자 한 글자에 정말 민감하기 때문에 이런 눈에 보이지 않는 부분도 결코 소홀히 하고 넘어가서는 안 됩니다.
다만 채점 프로그램도 융통성이 있어서, 다음과 같은 경우들은 허용을 해줍니다.
- 개행 대신 공백, 또는 공백 대신 개행을 출력한 경우
- 각 줄의 끝에 불필요한 공백이 1개 있는 경우
하지만 그 이상으로 불필요한 화이트스페이스가 더 있거나 필요한 화이트스페이스를 출력하지 않으면 모두 출력 형식이 잘못되었습니다를 받게 될 것입니다. 채점은 오로지 출력된 내용만을 보는 것이기 때문에 출력한 모든 글자가 중요하다는 것을 꼭 기억하세요.
'PS > 자주 하는 답변' 카테고리의 다른 글
Undefined Behavior가 있으면 무슨 일이 일어나도 이상하지 않습니다. (2) | 2023.04.18 |
---|---|
퀵정렬은 제곱입니다. (0) | 2023.03.24 |
input()과 sys.stdin.readline()의 차이 (0) | 2023.01.29 |
시간 복잡도는 수행 시간이 아닙니다. (2) | 2023.01.28 |
모든 분기를 테스트 해보세요. (0) | 2023.01.27 |