http://www.cplusplus.com/reference/string/string/getline/
입출력 버퍼에 대하여 정확하게 알고 있지는 않습니다만, 찾아본 레퍼런스 내용에 기반하여 답변드리고자 합니다.
cin은 입력을 받을 경우, 개행 문자 전까지만 입력으로 생각하고, '\n'를 버퍼에 남기는 것이 맞습니다.
다만, getline은 개행 문자 전까지 입력을 받는 것은 동일하나, '\n'를 버퍼에 남기지 않습니다.
고로, 원칙적으로는 cin.ignore()를 사용하지 않는 것이 옳다고 봅니다.
BOJ의 채점결과와 로컬의 실행결과가 일치하지 않는 이유는 다양하겠습니다만, Windows와 Linux의 개행 문자 차이, 컴파일러의 차이 등이 그 이유가 되지 않을까 생각합니다.
seecimi 4년 전
매 줄을 getline으로 받을때마다, 버퍼에 '\n'이 저장될거라 생각했습니다.
그래서 매 반복문이 끝날때마다, cin.ignore()를 사용했더니 출력초과로 오답을 받게되었습니다.
<궁금한 점>
모든 백준문제에서 예제 입력을 복사/붙여넣기 하여 문제를 풀었습니다.
이번문제는 cin.ignore()를 사용하지 않으면, 출력이
이렇게 나오게 됩니다.
하지만 31번째 줄에 cin.ignore()추가시,
정상적으로 출력됩니다.
제가 ignore()에 대해 잘못 알고 있는점이 있다면, 답변 부탁드리겠습니다.
읽어주셔서 감사합니다.