본문 바로가기
with my rubber duck/codingTest

[백준 11047] 동전 풀기 껌이지~

by stilinski 2022. 7. 25.
728x90

https://www.acmicpc.net/problem/11047

 

11047번: 동전 0

첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)

www.acmicpc.net

 

 

import java.util.Scanner;
class Main{
    public static void main(String args[]){
        Scanner sc = new Scanner(System.in);
        String[] nums = sc.nextLine().split(" ");
        int N = Integer.parseInt(nums[0]); // 동전개수
        int K = Integer.parseInt(nums[1]); // 구해야하는 수
        int[] coins = new int[N]; 
        
        //동전들 배열에 담기
        for(int i =0;i<N;i++){
            coins[i]=sc.nextInt();
        }
        
        int sum= 0;
        int cnt=0;
        for(int i=N-1;i>=0;i--){
            if(coins[i]<=K){
                while(K-sum >= coins[i]){
                    sum+=coins[i];
                    cnt++;
                }
                
            }
        }
        System.out.println(cnt);
    }
}

 

아오 배고파

 

 

복습할때 그리디 알아보기~

 

 

++0731복습

import java.util.Scanner;
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] str = sc.nextLine().split(" ");
        int N = Integer.parseInt(str[0]);
        int K = Integer.parseInt(str[1]);
        
        int[] coins = new int[N];
        for(int i=0;i<N;i++){
            coins[i]=sc.nextInt();
        }
        
        int cnt=0;
        for(int i=N-1;i>=0;i--){
  
            if(coins[i]<=K){
                cnt+=K/coins[i];
                K=K%coins[i];
            }
            
        }
        
        System.out.println(cnt);
    }
}

 

 

 

++0909 복습

import java.util.Scanner;
class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String[] nums = sc.nextLine().split(" ");
        int N = Integer.parseInt(nums[0]);
        int amount = Integer.parseInt(nums[1]);
        
        int[] coins = new int[N];
        for(int i=0;i<N;i++){
            coins[i]=sc.nextInt();
        }
        
        int cnt = 0;
        for(int i=N-1;i>=0;i--){
            
           if(coins[i]<=amount){
                cnt += amount/coins[i];
                amount = amount%coins[i];
            }
            
                          
           if(amount == 0){
                break;
            }
       
        }
        
        System.out.println(cnt);
        
    }
}

 

돈이 0이되면 반복문 더 돌거 없이 빠져나오게 함.

속도 더 빨라짐

728x90

댓글