irikong   6년 전

답을 출력할 때 별찍기 문제들 처럼 마지막에 남아있는 공백들이 찝찝해서 마지막 공백을 지우고 다음 줄로 넘어갈 수 있도록 printf("\b\n");와 같이 처리하였는데 틀렸습니다가 나와서 printf("\b\n"); 부분에서 \b를 지우고 제출하니 바로 맞았습니다로 처리되었습니다.

범위 내의 수를 이진수로 나타낼 때 1이 1번씩은 있으므로 출력의 마지막에는 항상 공백이 남아있을 것이기 때문에 \b를 해서 답에 직접적인 영향이 갈 것이라고는 생각되지 않습니다. 직접 입력해봐도 잘 출력됩니다. 뒤의 공백을 제거했기 때문에 틀린 것 같은데 이게 아니라면 \b를 사용해서는 안되는 다른 이유가 있는지 궁금합니다.

djm03178   6년 전

\b도 하나의 문자입니다. 그것이 화면상에 출력될 때는 커서가 하나 앞으로 이동하는 것처럼 보이지만, 출력되는 내용 자체는 그냥 \b라는 문자가 하나 더 있을 뿐입니다.

채점 프로그램이 뒤에 공백 하나 정도는 너그럽게 봐 주니까 너무 신경쓰지 않으셔도 됩니다.

bupjae   6년 전

\b 때문에 틀렸습니다 를 받은 겁니다.


(별찍기 문제를 제외한) 채점 프로그램에서는 제출한 답안이 생성한 출력 결과의 마지막에 붙어있는 whitespace (space, newline, ...) 등을 무시하고 채점합니다. 하지만 "\b"는 whitespace가 아니기 때문에 채점 프로그램이 볼 때는 틀린 답안이 됩니다.

\b 문자는 사람이 모니터에서 볼 때 보이지 않는 문자라고 해도 엄연히 컴퓨터 데이터상으로는 존재하는 데이터이기 때문입니다.

다만, 별찍기 문제에서는 빈 칸 하나하나가 중요한 의미를 가지기 때문에 출력 결과 마지막에 붙어있는 whitespace도 채점 대상이 됩니다.

irikong   6년 전

알려주셔서 감사합니다.

djm03178   6년 전

방금 별찍기 10과 11에서 정답을 받은 코드의 putchar('\n'); 들을 printf(" \n"); 으로 바꿔보았으나 모두 정답 처리되었습니다. 공백 하나 정도는 신경쓰지 않는 듯 합니다.

댓글을 작성하려면 로그인해야 합니다.