The Kkang's man

[자바 / Java] 백준 11047 : 동전0 본문

알고리즘/그리디

[자바 / Java] 백준 11047 : 동전0

정낑깡 2021. 5. 31. 23:13

문제


풀이

[백준 15552 번 : 빠른 A+B] 에서 Scanner를 사용했을때 보다 BufferedReader를 사용했을때 메모리와 시간의 효율이 훨씬 뛰어나다는 것을 배운 뒤로 BufferedReader를 쓰는 연습을 하고 있다.

 

# Scanner를 이용한 풀이

 

더보기
import java.util.Scanner;

public class Coin0 {
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		int N = sc.nextInt();
		int K = sc.nextInt();
		int result = 0;
		
		int[] money = new int[N];			// 돈의 단위를 넣어줄 배열 생성
		
		for(int i=0; i<N; i++) {			// 단위를 입력받을 방의 수
			money[i] = sc.nextInt();		// 단위 입력받음
		}
				
		for(int i=N-1; i>=0; i--) {			// 단위가 큰 돈부터 for문 돌리기
			if( K >= money[i] ) {			// K보다 작거나 같은 money 고르기
				
				result += K / money[i];		// 그 money로 K를 나눔
				K = K % money[i];		// 다음 K는 money로 K를 나눈 나머지
				
			}
		}
		System.out.println(result);
	}

}

 

# BufferedReader를 이용한 풀이

 

더보기
import java.io.*;

import java.util.StringTokenizer;

public class Coin0_Buffered {
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		int result = 0;
		
		int[] money = new int[N];				// 돈의 단위를 넣어줄 배열 생성
		
		for(int i=0; i<N; i++) {				// 단위를 입력받을 방의 수
			money[i] = Integer.parseInt(br.readLine());	// 단위 입력받음
		}
		
		for(int i=N-1; i>=0; i--) {				// 내림차순으로 for문 돌리기 	
			if( K >= money[i] ) {				// K보다 작거나 같은 money 고르기
				
				result += K / money[i];			// 그 money로 K를 나눔
				K = K % money[i];			// 다음 K는 money로 K를 나눈 나머지
				
			}
		}
		System.out.println(result);
	}

}
Comments