본문 바로가기

Coding Test/PS

[백준/Java] 25304번: 영수증 (브론즈4)

🟤 백준 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