무한 반복문을 제어하는 문제를 풀다가 막혀서 정리하고자 한다.
데이터 소스에서 더 이상 읽을 데이터가 없어 EOF(End Of File)를 리턴하면 종료해야 하므로
EOF가 true면 반복문을 탈출하도록 만든다.
EOF: 입력의 끝
"입력의 끝"(eof)에 다다랐다면, 반복문에서 탈출한다라는 뜻을 가진 구문이다.
if (cin.eof() == 1) { break; }
ex) https://www.acmicpc.net/problem/14909
14909번: 양수 개수 세기
첫째 줄에 최대 1,000,000개의 정수가 주어진다. 입력으로 주어지는 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같다.
www.acmicpc.net
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int cnt = 0;
while (1) {
int n;
cin >> n;
if (cin.eof() == 1) break;
if (n > 0) cnt++;
}
cout << cnt;
}
'🍞 Problem Solving > C & C++' 카테고리의 다른 글
[C++] 코딩테스트 알고리즘 c++ 문법 정리 (2) | 2024.02.24 |
---|---|
[C++] 백트래킹, 순열, 조합, 부분집합, 중복순열, next_permutation (0) | 2024.02.23 |
[C++] 문자열 자르기 사용법 substr() (0) | 2022.09.27 |