본문 바로가기
문제 풀이/BOJ(Baekjoon Online Judge)

[백준] 25304번: 영수증 (C++)

by Electrohyun 2024. 10. 11.

 


 

생각 과정

 

입력 순서대로 코드를 작성한다.

 

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 > 100return 0;
 
    for (int c = 0; c < N; c++) {
        cin >> a >> b;
        if (a < 1 || a > 1000000 || b < 1 || b > 10return 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;