


✅ 문제
영수증에 적힌, 구매한 각 물건의 가격 & 개수구매한 물건들의 총 금액을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
📥 입력
첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.
둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.
이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.
📥 출력
구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다.
일치하지 않는다면 No를 출력한다.
💡 풀이
변수 int x와 n을 선언하고 구매한 물건의 총 합과 종류 수를 입력 받는다. 그리고 합을 누적해줄 정수형 변수 int hap을 선언해주었다. 반복문 for문을 0부터 n까지 1씩 증가하며 돌려주는데, 반복문을 돌리며 물건의 가격 a와 물건의 갯수 b를 입력받고 두 가지를 곱해준 다음 hap에 누적시켜 주었다.
for문을 종료한 뒤, if-else 조건문으로 x와 hap이 같으면 Yes를 출력하고 아니라면 No를 출력하는 코드를 작성해 준다.
여기서 주의할 점!! 대문자로 시작한다. 자바는 대소문자를 구별하기 때문에 금액이 일치하면 Yes, 아니라면 No를 써 주어야 한다. yes나 no로 작성하면 틀린 코드로 판정된다
✅ 1. Scanner 로 입력받기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int n = sc.nextInt();
int hap = 0;
for(int i=0; i<n; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
hap += a*b;
}
if (x==hap) System.out.println("Yes");
else System.out.println("No");
}
}
✅ 2. 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));
// BufferedReader 객체를 생성
StringTokenizer st = new StringTokenizer(br.readLine());
// BufferedReader를 사용하여 한 줄을 읽고,
// 그것을 StringTokenizer를 사용하여 공백을 기준으로 문자열을 분리
int x = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
// StringTokenizer에서 읽은 문자열을 정수로 변환하여 변수 x와 n에 저장
int hap = 0;
// hap 변수를 선언하고 0으로 초기화합니다. hap은 최종 결과를 저장하는 변수
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
hap += a * b;
// hap 변수에 a와 b의 곱을 누적(모든 입력 값의 곱을 누적)
}
if (x == hap)
System.out.println("Yes");
else
System.out.println("No");
}
}
초보자들은 비교적 사용이 간편한 Scanner를 많이 사용하기 때문에 BufferedReader 객체를 이용하는 것은 어려울 수 있다. 그래서 BufferedReader 사용법을 간단히 설명해 보자면...
먼저
BufferedReader 객체를 생성해준다. BufferedReader는 텍스트를 읽기 위한 클래스이고, InputStreamReader는 바이트 스트림을 문자 스트림으로 변환하는 클래스이다. System.in은 표준 입력 스트림인데, 사용자의 입력을 받는 키보드 입력을 의미한다. 따라서 new InputStreamReader(System.in)은 키보드 입력을 받아들이는 문자 스트림을 생성하고, 이를 다시 BufferedReader에 전달하여 버퍼링된 입력 기능을 제공하게 된다. 버퍼링은 데이터를 한 번에 읽거나 쓰는 것보다 여러 번 작은 덩어리로 나누어서 읽거나 쓰는 것이 효율적일 때 사용된다.
따라서 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));은 사용자의 키보드 입력을 받기 위한 BufferedReader 객체를 생성하는 과정이다. 이렇게 하면 나중에 br.readLine()을 사용하여 사용자의 입력을 한 줄씩 읽어올 수 있다.
Scanner 대신 BufferedReader를 사용하여 입력을 받으면 StringTokenizer를 사용하여 각 줄을 공백을 기준으로 나누어 처리한다.
'코딩테스트 > BaekJoon' 카테고리의 다른 글
[백준] 15552번 빠른 A+B - 자바 / java (0) | 2024.04.15 |
---|---|
[백준] 25314번 코딩은 체육과목 입니다 - 자바 / java (0) | 2024.04.12 |
[백준] 8393번 합 - 자바 / java (0) | 2024.04.12 |
[백준] 10950번 A+B-3 자바 / java (0) | 2024.04.11 |
[백준] 2739번 구구단 - 자바 / java (0) | 2024.04.11 |



✅ 문제
영수증에 적힌, 구매한 각 물건의 가격 & 개수구매한 물건들의 총 금액을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
📥 입력
첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.
둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.
이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.
📥 출력
구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다.
일치하지 않는다면 No를 출력한다.
💡 풀이
변수 int x와 n을 선언하고 구매한 물건의 총 합과 종류 수를 입력 받는다. 그리고 합을 누적해줄 정수형 변수 int hap을 선언해주었다. 반복문 for문을 0부터 n까지 1씩 증가하며 돌려주는데, 반복문을 돌리며 물건의 가격 a와 물건의 갯수 b를 입력받고 두 가지를 곱해준 다음 hap에 누적시켜 주었다.
for문을 종료한 뒤, if-else 조건문으로 x와 hap이 같으면 Yes를 출력하고 아니라면 No를 출력하는 코드를 작성해 준다.
여기서 주의할 점!! 대문자로 시작한다. 자바는 대소문자를 구별하기 때문에 금액이 일치하면 Yes, 아니라면 No를 써 주어야 한다. yes나 no로 작성하면 틀린 코드로 판정된다
✅ 1. Scanner 로 입력받기
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int n = sc.nextInt();
int hap = 0;
for(int i=0; i<n; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
hap += a*b;
}
if (x==hap) System.out.println("Yes");
else System.out.println("No");
}
}
✅ 2. 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));
// BufferedReader 객체를 생성
StringTokenizer st = new StringTokenizer(br.readLine());
// BufferedReader를 사용하여 한 줄을 읽고,
// 그것을 StringTokenizer를 사용하여 공백을 기준으로 문자열을 분리
int x = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
// StringTokenizer에서 읽은 문자열을 정수로 변환하여 변수 x와 n에 저장
int hap = 0;
// hap 변수를 선언하고 0으로 초기화합니다. hap은 최종 결과를 저장하는 변수
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
hap += a * b;
// hap 변수에 a와 b의 곱을 누적(모든 입력 값의 곱을 누적)
}
if (x == hap)
System.out.println("Yes");
else
System.out.println("No");
}
}
초보자들은 비교적 사용이 간편한 Scanner를 많이 사용하기 때문에 BufferedReader 객체를 이용하는 것은 어려울 수 있다. 그래서 BufferedReader 사용법을 간단히 설명해 보자면...
먼저
BufferedReader 객체를 생성해준다. BufferedReader는 텍스트를 읽기 위한 클래스이고, InputStreamReader는 바이트 스트림을 문자 스트림으로 변환하는 클래스이다. System.in은 표준 입력 스트림인데, 사용자의 입력을 받는 키보드 입력을 의미한다. 따라서 new InputStreamReader(System.in)은 키보드 입력을 받아들이는 문자 스트림을 생성하고, 이를 다시 BufferedReader에 전달하여 버퍼링된 입력 기능을 제공하게 된다. 버퍼링은 데이터를 한 번에 읽거나 쓰는 것보다 여러 번 작은 덩어리로 나누어서 읽거나 쓰는 것이 효율적일 때 사용된다.
따라서 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));은 사용자의 키보드 입력을 받기 위한 BufferedReader 객체를 생성하는 과정이다. 이렇게 하면 나중에 br.readLine()을 사용하여 사용자의 입력을 한 줄씩 읽어올 수 있다.
Scanner 대신 BufferedReader를 사용하여 입력을 받으면 StringTokenizer를 사용하여 각 줄을 공백을 기준으로 나누어 처리한다.
'코딩테스트 > BaekJoon' 카테고리의 다른 글
[백준] 15552번 빠른 A+B - 자바 / java (0) | 2024.04.15 |
---|---|
[백준] 25314번 코딩은 체육과목 입니다 - 자바 / java (0) | 2024.04.12 |
[백준] 8393번 합 - 자바 / java (0) | 2024.04.12 |
[백준] 10950번 A+B-3 자바 / java (0) | 2024.04.11 |
[백준] 2739번 구구단 - 자바 / java (0) | 2024.04.11 |