[★2][백준25304번]영수증 (JAVA)
카테고리: BKJN
태그: Algorithm Java Coding Test
[★2][백준25304번]영수증 (JAVA)
25304번 문제 ☞ https://www.acmicpc.net/problem/25304
난이도 ☞ [★2]
영수증
- 문제
- 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
영수증에 적힌,- 구매한 각 물건의 가격과 개수
- 구매한 물건들의 총 금액
을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
- 첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.
둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.
이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다. -
구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.
예제입력 예제출력 260000
4
20000 5
30000 2
10000 6
5000 8Yes 예제입력 예제출력 250000
4
20000 5
30000 2
10000 6
5000 8No
- 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
내가 푼 풀이
이번 문제는 for
문과 if
문을 활용하여 구현하는 문제입니다. 우선 제일 기본적인 Scanner
를 사용하여 출력하는 방법입니다.
[ 풀이 1 ]
메모리 :
17796KB
시간 :228ms
Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int total = s.nextInt(); // 총 금액
int tAmount = s.nextInt(); // 총 수량
for (int i = 0; i < tAmount; i++) {
int price = s.nextInt(); // 개별 가격
int amount = s.nextInt(); // 개별 수량
total = total - (price * amount);
// 입력 가격 = 총 금액 - (개별 가격 * 개별 수량)
}
if (total == 0) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
다음은 BufferedReader
를 활용하여 출력하는 방법입니다. 문제의 답과 제일 흡사하다고 저는 개인적으로 생각을 합니다. 왜냐면, 개별 가격과 개별 수량 사이의 공백으로 두고 주어진다고 문제에 나와있으니 제일 흡사하지 않나 싶습니다.
[ 풀이 2 ]
메모리 :
14096KB
시간 :124ms
BufferedReader
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int total = Integer.parseInt(br.readLine());
int tAmount = Integer.parseInt(br.readLine());
for (int i = 0; i < tAmount; i++) {
st = new StringTokenizer(br.readLine(), " ");
int price = Integer.parseInt(st.nextToken());
int amount = Integer.parseInt(st.nextToken());
total = total - (price * amount);
}
if (total == 0) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
여기서도 확실히 Scanner
보다는 BufferedReader
가 성능이 우수하다고 보여집니다.
댓글 남기기