2022. 5. 5. 02:08ㆍPS (Program Solving)/BOJ (백준)
문제 설명
https://www.acmicpc.net/problem/14909
14909번: 양수 개수 세기
첫째 줄에 최대 1,000,000개의 정수가 주어진다. 입력으로 주어지는 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같다.
www.acmicpc.net
접근 방법 - 무한 반복문 제어 및 조건문 문제
백준의 14909번 문제는 무한 반복문을 적절히 제어하며 조건문을 통해 정답을 구해야 하는 문제이다.
해당 문제는, 입력받은 정수들 중 양수의 개수가 몇 개인지를 출력해야 하는 문제이다.
C++에선, 무작위적으로 들어오는 입력값에 대해 입력을 받을 시 아래의 구문을 사용하니 이 점을 참고하길 바란다.
(<"입력의 끝"(eof)에 다다랐다면, 반복문에서 탈출한다.>라는 뜻을 가진 구문이다.)
if (cin.eof() == 1) { break; }
위처럼 무한 반복문의 제어와 조건문의 사용이 용이하다면, 쉽게 풀 수 있는 문제로 예상된다.
하지만 이 점에 대해 어려움을 겪고 있다면, 아래의 설명과 코드를 참고해보길 바란다.
필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.
코드의 실행 순서
1) 양수의 개수를 카운팅할 변수 num을 0으로 초기화하여 선언한다.
2) 무한 반복문을 실행하며 아래의 연산을 취한다.
- 입력값을 하나씩 받는다.
- 입력값이 0보다 크다면, 이는 양수이다. 따라서 이 경우엔, num에 1을 더한다.
- 입력의 끝에 다다를 때까지 입력을 받다가, eof에 도달했을 시엔 반복문에서 탈출한다.
3) 최종적으로 저장된 num의 값을 출력한 뒤, 실행 종료한다.
성공한 코드
#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <iostream>
#define endl '\n'
using namespace std;
//백준 14909번 코드
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int num = 0;
while (1) {
int a;
cin >> a;
if (cin.eof() == 1) { break; }
if (a > 0) { num++; }
}
cout << num << endl;
}
제출 결과
(2022.04.27 백준 14909번 문제 제출 결과)
'PS (Program Solving) > BOJ (백준)' 카테고리의 다른 글
[백준 BOJ] 5618번 공약수 (C++/cpp) (0) | 2022.05.07 |
---|---|
[백준 BOJ] 11170번 0의 개수 (C++/cpp) (0) | 2022.05.06 |
[백준 BOJ] 15964번 이상한 기호 (C++/cpp) (0) | 2022.05.05 |
[백준 BOJ] 2530번 인공지능 시계 (C++/cpp) (0) | 2022.05.03 |
[백준 BOJ] 1264번 모음의 개수 (C++/cpp) (0) | 2022.05.01 |