본문 바로가기

컴퓨터/백준 알고리즘

백준 알고리즘 25304번: 영수증(자바 Java)

문제 출처: https://www.acmicpc.net/problem/25304

 

25304번: 영수증

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

www.acmicpc.net

1. 코드

import java.util.*;

class Product{
	private int cost, num;
	static int sum = 0;
	
	Product(int cost, int num){
		this.cost = cost;
		this.num = num;
		productSum();
	}
	
	private void productSum() {
		sum += cost * num;
	}
}

class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();
		int n = sc.nextInt();
		
		Product[] p = new Product[n];
		
		for(int i = 0; i < n; i++)
			p[i] = new Product(sc.nextInt(), sc.nextInt());
		
		String result = (x == Product.sum) ? "Yes" : "No";
		System.out.println(result);
		sc.close();
	}
}

(실행)

2. 풀이

class Product{
	private int cost, num;
	static int sum = 0;
	
	Product(int cost, int num){
		this.cost = cost;
		this.num = num;
		productSum();
	}
	
	private void productSum() {
		sum += cost * num;
	}
}

Product 클래스는 준원이가 구매한 물건에 대한 정보를 다루기 위함이다. cost는 물건의 가격, num은 물건의 수, 그리고 sum은 총 물건 가격의 합계이다. Product 생성자는 물건의 가격과 개수 정보를 받아서 저장한 후 productSum 클래스 메소드를 통해서 입력된 물건들의 가격을 계산한다.

class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int x = sc.nextInt();
		int n = sc.nextInt();
		
		Product[] p = new Product[n];
		
		for(int i = 0; i < n; i++)
			p[i] = new Product(sc.nextInt(), sc.nextInt());
		
		String result = (x == Product.sum) ? "Yes" : "No";
		System.out.println(result);
		sc.close();
	}
}

main 함수에서는 x와 n에 대한 정보를 입력받고 n만큼 Product 인스턴스를 배열로 할당한 뒤 n만큼 반복하여 물건의 가격과 개수를 Product 생성자에 전달한다. 물건 가격의 총액은 이미 계산이 되었기에 영수증에 가격과 비교 후 같다면 Yes를 다르다면 No를 출력해준다.