반응형
https://www.acmicpc.net/problem/25304
위에는 문제 링크!
아래는 문제 캡쳐!
Java 로 풀었다!
나만 너무 어렵게 생각했나 ㅎ 많은 사람들은 엄청 쉽게 푼 것 같다.
나는 중간중간 문장도 넣었다
import java.util.Scanner;
public class cal {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
System.out.println("Your total price : ");
int total = input.nextInt();
System.out.println("How many kind of things did you buy? : ");
int kind = input.nextInt();
//위에서 나는 4하고 enter 를 치면, enter ("\n") 가 그 다음 input.nextLine() 메서드는 버퍼에 남아 있는 줄바꿈 문자 \n을 읽습니다. 그 결과 빈 문자열 ""이 abstr[0]에 저장됩니다.
// 그걸 방지하기 위해 아래 부분에서 아래와 같이 남은 줄바꿈 문자를 소비
input.nextLine();
System.out.println("Then let me know all of the price and the EA" );
String[] abstr = new String[kind];
for (int i = 0; i<kind; i++) {
abstr[i] = input.nextLine();
String[][] absplitstr = {abstr[i].split("\\s")};
int[] absplitint = {Integer.parseInt(absplitstr[0][0]), Integer.parseInt(absplitstr[0][1])};
total -= (absplitint[0]*absplitint[1]);
}
if (total == 0) {
System.out.println("Yes!");
} else {
System.out.println("no!");
}
}
참고로, 내가 17번 line 의 코드를 빼먹었을 때, abstr[0] = ""; 이렇게 빈칸이 들어가버리는 문제가 생겼고, 그 이유를 몰랐는데, Chat gpt 선생님이 친절하게 그 이유를 알려줬다.
아래는 gpt 답변!
abstr[0]에 빈 문자열 ""이 들어가는 이유는 Scanner 객체의 nextLine() 메서드가 이전 입력에서 남은 줄바꿈 문자(\n)를 읽어버리기 때문입니다.
아래에서 이 상황을 단계별로 설명할게요.
코드 동작 과정
- total 값 입력: 사용자가 input.nextInt()를 통해 정수 260000을 입력합니다. 이때 사용자가 입력한 값 뒤에 Enter 키를 누르면, 숫자 260000 뒤에 \n (줄바꿈 문자)이 입력 버퍼에 남아 있게 됩니다.
- kind 값 입력: 마찬가지로, input.nextInt()를 통해 정수 4를 입력합니다. 그리고 \n이 다시 입력 버퍼에 남아 있게 됩니다.
- 첫 번째 nextLine() 호출: 반복문 안에서 abstr[0] = input.nextLine();이 실행되면, input.nextLine() 메서드는 버퍼에 남아 있는 줄바꿈 문자 \n을 읽습니다. 그 결과 빈 문자열 ""이 abstr[0]에 저장됩니다.
- 이후 nextLine() 호출: 그 다음 반복에서 input.nextLine()이 호출될 때마다 사용자가 입력한 값을 제대로 읽게 됩니다.
해결 방법
이 문제를 해결하려면 nextInt() 다음에 nextLine()을 한 번 호출하여 입력 버퍼에 남아 있는 줄바꿈 문자를 소비해주면 됩니다.
이제 앞으로 습관을 들이자!
꼭! nextInt(); 를 쓰면, 아래에 input.nextLine(); 을 써줘서 "\n" 을 소비해주자!
int num = input.nextInt();
input.nextLine();
너무 어렵게 풀었나? 싶은 백준 문제 java 풀이 끝!
반응형
'Computer Science' 카테고리의 다른 글
[JAVA] 반복문 사용해서 1부터 100까지의 합 구하기 5가지 방법 (0) | 2024.08.29 |
---|---|
[JAVA] 인스턴스 변수와 클래스 변수 -> 코드 상으로 확인해보자! (1) | 2024.08.28 |
[Java] 문자열에서 모음 및 자음 개수 확인하여 출력하기 문제 풀기 (0) | 2024.08.14 |
[JAVA] java 로 1부터 9까지 구구단 만들기 (0) | 2024.07.28 |
[Mac OS] M2 Java Development Kit (JDK), Eclipse 설치하기 (0) | 2024.07.21 |