입출력은 ICPC 문제 틀렸습니다
의 알파이자 오메가라고 할 수 있습니다.
이 문서에서는 입출력으로 인한 성능 감소 폭을 줄이는 방법과,
여러 입력 유형을 처리하는 방법에 대해 논합니다.
흔한 유형입니다. n줄에 걸쳐서, 혹은 한 줄에 n개의 값을 주기도 합니다.
옛날에 만들어진 테스트케이스는 C++을 기준으로 테스트를 했다던가 하는 이유로, 다음의 조건을 완벽히 지키지 않기도 합니다. RTE가 뜬다면 다음을 확인해보세요.
1 2 4
) 3 7
)trim
이나 strip
따위의 함수로 앞뒤 공백을 지우고,
공백 단위로 나눈 다음 빈 문자열을 지우면 보통 해결할 수 있습니다.
적다면 빈 공간을 0으로 채우고 (C++ 배열로 테스트한 경우일 가능성이 높습니다), 많다면 정확히 n개만 남도록 컨테이너를 재조정합니다.
\n
으로 끝나지 않습니다.\n
을 생각하고 마지막 문자를 자르는 방식으로 입출력을 처리하는 것은 위험합니다.
가능하다면 trim
, strip
등의 공백 제거 함수를 사용하는 것이 좋습니다.
EOF
라는 키워드로 검색하면 잘 나올 겁니다.
while (true)
와 eof 감지를 통해 입력의 끝까지 읽으시면 됩니다.