🟤 백준 25304번: 영수증 (브론즈4)
문제 풀이
1차 풀이
import java.util.*;
import java.lang.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(br.readLine());
int n = Integer.parseInt(br.readLine());
// n번 반복
for (int i=0; i<n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine()); // 문자열 분리
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
// 영수증 총 금액에서 (구매 물건 가격 * 개수) 뺌
x = x - (a*b);
}
// x가 0이면 영수증 총 금액과 직접 계산한 총 금액이 같음
if (x == 0) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
2차 풀이
import java.util.*;
import java.lang.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int x = Integer.parseInt(br.readLine());
int n = Integer.parseInt(br.readLine());
// n번 반복
for (int i=0; i<n; i++) {
String line = br.readLine();
int idx = line.indexOf(" "); // 첫 번째 공백의 인덱스 위치
int a = Integer.parseInt(line.substring(0, idx)); // 0부터 공백 전까지 자름
int b = Integer.parseInt(line.substring(idx+1)); // 공백 다음부터 끝까지 자름
// 영수증 총 금액에서 (구매 물건 가격 * 개수) 뺌
x -= a * b;
}
// x가 0이면 영수증 총 금액과 직접 계산한 총 금액이 같음
System.out.println(x == 0 ? "Yes" : "No");
}
}
StringTokenizer와 `split()`을 제외한 문자열 분리 방법을 사용해봄
실행 시간은 똑같은 걸 보아 StringTokenizer를 사용해도 무방해보임
나중에 입력 수가 아주 많을 경우 다시 사용해봐야겠음
문자열 분리: `indexOf()`, `substring()`
indexOf()
: 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스 반환 (못 찾은 경우 "-1" 반환)
public class IndexOfTest {
public static void main(String[] args) {
String indexOfTestOne = "Hello world";
String indexOfTestTwo = " Hello world ";
System.out.println(indexOfTestOne.indexOf("o")); // 4
System.out.println(indexOfTestOne.indexOf("x")); // -1
System.out.println(indexOfTestOne.indexOf("o", 5)); // 7
System.out.println(indexOfTestOne.indexOf("o")); // 13
System.out.println(indexOfTestOne.indexOf("el")); // 10
}
}
시작할 위치는 생략 가능 (생락하면 0번째 즉, 처음부터 찾기 시작)
substring()
- `public String substring(int startIndex)` : startIndex부터 끝까지 문자열 리턴
- `public String substring(int startIndex, int endIndex)` : startIndex(포함)부터 endIndex(포함 X)까지 문자열 리턴
참고 자료
https://burning-go9me.tistory.com/104
Substring / indexof
문자열 자르기 - substring() java.lang.String 클래스의 substring() 메소드는 문자열의 특정 부분을 잘라내는 데 사용합니다. Method Signature substring() 메소드는 다음과 같이 2가지 형태로 사용할 수 있습니다
burning-go9me.tistory.com
'Coding Test > PS' 카테고리의 다른 글
[백준/Java] 10039번: 평균 점수 (브론즈4) (0) | 2025.03.30 |
---|---|
[백준/Java] 2480번: 주사위 세개 (브론즈4) (0) | 2025.03.30 |
[백준/Java] 15552번: 빠른 A+B (브론즈4) (0) | 2025.03.27 |
[백준/Java] 3052번: 나머지 (브론즈2) (0) | 2025.03.25 |
[백준/Java] 2739번: 구구단 (브론즈5) (0) | 2025.03.25 |