home > algorithm > baekjoon > [baekjoon] 영수증 (백준 25304 java 풀이)

[baekjoon] 영수증 (백준 25304 java 풀이)
algorithm baekjoon step3

intro : 물품의 가격과 수량의 개수를 계산한 각 라인의 총합과, 영수증의 가격을 비교해서 일치/불일치 여부를 처리하는게 포인트

백준 문제링크

문제 설명

준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다 영수증에 적힌, 구매한 각 물건의 가격과 개수 구매한 물건들의 총 금액 을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.

입력

첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다. 둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다. 이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.

출력

구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.

제한

1 ≤ X ≤ 1,000,000,000 
1 ≤ N ≤ 100 
1 ≤ a ≤ 1,000,000 
1 ≤ b ≤ 10 

문제 풀이

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int total = sc.nextInt();
        sc.nextLine();
        int count = sc.nextInt();
        sc.nextLine();
           
        int checkSum = 0;
        for (int i = 0 ; i < count; i++) {
            String input = sc.nextLine();
            String[] splitInput = input.split(" ");
            checkSum += (Integer.parseInt(splitInput[0]) * Integer.parseInt(splitInput[1]));
        } 
        
        if (total == checkSum) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
}

문제 해석

단순히 Scanner를 이용해서 값을 받아서 입력받은 값이 실제 영수증에 입력된 값과 같은지 비교하는 로직을 구성하는 문제, 중요한 포인트는 정수형 타입을 Scanner로 받은다음에 sc.nextLine을 해야한다는 점 이부분을 하지않는다면 Exception 발생

Scanner sc = new Scanner(System.in);

int total = sc.nextInt();
sc.nextLine();
int count = sc.nextInt();
sc.nextLine();