본문 바로가기
이론/알고리즘

[C++] BOJ 에서 정해지지 않은만큼의 입력을 받을 때

by 유세지 2021. 8. 24.

얼마 전부터 백준 온라인 저지에서 문제를 꾸준히 풀고 있었지만 알고리즘 관련한 포스팅은 되도록이면 나중으로 미루거나 안하려고 했는데, 입력 관련으로 문제를 겪어서 저처럼 헤매시는분이 계실까봐 기록합니다.

 

BOJ 5639번 문제는 이진 검색 트리를 구성하는 요소들이 전위 순회 방식으로 주어지고, 이를 후위 순회 방식으로 컨버팅하는 문제입니다. 따라서 입력으로 요소들이 들어오게 되는데, 문제는 얼마만큼의 요소가 들어오는지 알 수 없다는 점입니다.

 

 

위처럼 10,000개 이하의 요소가 들어온다는 점만 알고 있을뿐, 각 케이스에 얼마 만큼의 요소가 들어오는지는 정확히 알 수 없기 때문에 입력이 더 이상 들어오지 않을때까지 계속해서 받아줘야합니다.

 

처음에는 cin.eof() 를 이용하여 문제를 해결하려고 하였으나 실패했습니다.

 

while(!cin.eof()) {
	cin >> arr[i++];
}

 

실제로 이런식으로 입력을 받게되면 실제 로직에 오류가 없더라도 틀렸습니다를 받는데, 입력값이 예상과 다르게 들어오는 문제가 생깁니다.

 

따라서 입력을 올바르게 검증하기 위해서는 아래와 같은 방법을 사용해야 합니다.

 

while(cin >> tmp) {
	arr[i++] = tmp;
}

 

 

 

 

 

혹시 이 글을 읽고 계신 분께서 같은 문제로 고민하고 계셨다면, 이 방법으로 해결되셨으면 좋겠습니다.

짧은 글 읽어주셔서 감사합니다.

반응형

댓글