본문 바로가기

코딩/백준 BOJ

[백준/C언어] 25304번 - 영수증

백준 웹사이트 "25304번 - 영수증" 문제풀이입니다.

언어는 C언어입니다. (제출 언어: C99)

 


문제

 

25304번: 영수증

준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것

www.acmicpc.net


소스 코드

#include <stdio.h>

int main(void){
    int X, N;
    scanf("%d\n %d", &X, &N);
    
    int sum = 0;
    for(int i=0; i<N; i++){
        int a, b;
        scanf("%d %d", &a, &b);
        sum += a*b;
    }

    if(X == sum){
        printf("Yes");
    }
    else{
        printf("No");
    }

    return 0;
}

문제 풀이

  여러 입력들을 받아 일종의 "영수증 계산기"를 만드는 문제입니다. 입력 첫째 줄, 둘째 줄은 각각 총 금액 X와 물건 종류의 수 N을 입력받습니다. 이때 X, N을 각각 다른 줄에 입력받기 때문에, 줄바꿈 문자열 \n을 사이에 넣어줍니다.

  Line 7에서 등장하는 변수 sum은 앞으로 입력받을 물건들의 가격을 저장해두기 위한 변수입니다. Line 8의 for문에서 물건의 가격과 수를 입력받으면, 이 둘의 곱만큼을 sum에 더합니다. 반복문이 진행될 때마다 반복문 안에서 선언한 변수 a, b는 초기화되지만, for문 밖에서 선언한 sum은 초기화되지 않기에 총 합을 계속 저장해둘 수 있습니다. 총 반복 횟수는 앞서 입력받은 '물건 종류의 수 N'이므로, 위와 같이 초기식/조건식/증감식을 설정해주면 되겠습니다.

  마지막으로 Line 14에서는 총 금액 X와 총 합 sum을 비교합니다. 이 둘이 일치하면 "Yes"가, 일치하지 않는다면 "No"가 출력되도록 조건문(if/else)을 이용합니다.

반응형