생각 과정
입력 순서대로 코드를 작성한다.
cin 객체로 X와 N에 저장할 값을 먼저 입력받는다. + 범위 검사 ->
for문을 N의 값만큼 반복해 a와 b를 입력받는다 + 범위 검사 ->
a와 b를 곱한 값을 어딘가에 저장한다 (vector를 사용했다) ->
numeric 헤더 파일의 accumulate 함수를 사용해 vector에 저장된 값을 전부 더하고,
비교 연산자를 통해 X의 값과 비교한다. 이때 반환되는 값은 1 아니면 0
Yes 혹은 No를 출력해야 하는 문제이므로 if문으로 분기해 cout 객체로 출력할 값을 결정한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main(void) {
int X, N, a, b;
vector<int> va; // a값 b값을 각각 저장하는 벡터
cin >> X >> N;
if (X < 1 || X > 1000000000 || N < 1 || N > 100) return 0;
for (int c = 0; c < N; c++) {
cin >> a >> b;
if (a < 1 || a > 1000000 || b < 1 || b > 10) return 0;
va.push_back(a*b);
}
if ((accumulate(va.begin(), va.end(), 0)) == X) cout << "Yes";
else cout << "No";
return 0;
}
|
cs |
알게 된 것들
(문제와 관련 X)
- "Yes"와 "No"를 출력하는 문제지만 true나 false라고 표현되는 걸 보려고 bool형 변수에 accumulate~ 부분의 반환값을 저장하려 했었는데, cout을 이용해 출력할 때 1 아니면 0이 나왔다.
-> C++에서 cout을 사용하여 bool 타입의 변수를 출력할 때 기본적으로 true는 1로, false는 0으로 출력된다.
-> true와 false를 출력하고 싶다면 std::boolalpha를 사용하면 된다. cout << boolalpha << result;
'문제 풀이 > BOJ(Baekjoon Online Judge)' 카테고리의 다른 글
[백준] 11021번: A+B - 7 (C++) (1) | 2024.10.13 |
---|---|
[백준] 25314번: 코딩은 체육과목 입니다 (C++) (0) | 2024.10.12 |
[백준] 8393번: 합 (C++) (1) | 2024.10.10 |
[백준] 10950번: A+B - 3 (C++) (1) | 2024.10.09 |
[백준] 2739번: 구구단 (C++) (0) | 2024.10.09 |