[알고리즘]/백준

자바 - 구현 - 백준 11047 동전 0

broship 2021. 4. 24. 22:08

문제


 

 

 

문제해결1


import java.util.Scanner;

public class S1_11047 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        int money = sc.nextInt();
        int[] coins = new int[size];
        for (int i = 0; i < size; i++) {
            coins[i] = sc.nextInt();
        }

        int cnt = 0;
        for (int i = size-1; i >= 0; i--) {
            if(coins[i]<=money){
                while (money-coins[i]>=0){
                    money -= coins[i];
                    cnt++;
                }
            }
        }

        System.out.println(cnt);
    }
}

- 코인이 큰 순서대로 확인을 하며 돈보다 코인의 단위가 작을시 while문을 통해 해당 단위씩 빼기 연산을 진행하여 문제를 해결하였다

 

 

 

문제해결2


import java.util.Scanner;

public class S1_11047 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int size = sc.nextInt();
        int money = sc.nextInt();
        int[] coins = new int[size];
        for (int i = 0; i < size; i++) {
            coins[i] = sc.nextInt();
        }

        int cnt = 0;
        for (int i = size-1; i >= 0; i--) {
            if(coins[i]<=money){
                cnt += (money/coins[i]);
                money %= coins[i];
            }
        }

        System.out.println(cnt);
    }
}

출처 : st-lab.tistory.com/143

- 먼저 푼 방법이 비효율적인것 같아 구글링을 해보니 나누기 연산으로 cnt를 세는 방법과 나머지 연산으로 남은 돈 구하는 방식을 통해 연산을 한번으로 줄일 수 있었다