minov   1년 전

소스코드와 같이 작성 하였는데 계속 틀렸다고 나오네요 ㅠ
어떤 부분이 문제인지 의견 부탁 드립니다.. 흑..

occidere   1년 전

해결하셨을 수도 있지만 혹시나 해서 답변 드립니다.


이렇게 입력 데이터에 종료 조건이 없는 문제들은 대부분 종료조건으로 EOF(End Of Files)가 사용됩니다.

EOF란 입출력(io)에서 파일이나 문자열의 종료를 의미하는 값으로 C에서는 -1, 자바 등에서는 null이 됩니다.

(이클립스에서 입력받을 때 콘솔창에 Ctrl+z를 입력하시면 EOF값이 들어갑니다)


그런데 여기서 입력방법에 문제가 생깁니다.

Scanner는 사용은 편리하나, 띄어쓰기나 개행문자(엔터)를 만나면 서로 다른 글자로 인식을 하게 됩니다.

ex) Online Judge -> Online(문자열 1), Judge(문자열 2)


따라서 이 문제에서는 띄어쓰기 등을 무시하고 한 줄을 통째로 입력 받을 수 있는 BufferedReader를 사용하셔야 됩니다.

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

ex) Online Judge -> Online Judge(문자열 1)


아래 사진을 보면 BufferedReader를 이용해서 값을 입력받을 때 EOF이면 null을 리턴함을 알 수 있습니다.


dd.JPG

이제 이를 이용해 종료 조건(EOF)이 들어오기 전 까지 문자열을 입력 & 출력하는 식을 짜면 아래와 같습니다

(보기 쉬우시라고 그냥 System.out.println을 사용하였으나, 출력 할 때도 BufferedWriter를 이용하시는 것을 권장합니다.)

occidere   1년 전

또는 아래의 방법을 이용하실 수도 있습니다. (출처: 백준 온라인 저지 슬랙 中 cubelover님과 salgu님의 대화)

minov   1년 전

occidere 님 감사합니다. :)
다음부터 활용 용도에 따라 잘 보고 사용해야겠네요..

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