[백준] 11047번: 동전 0

2018. 5. 31. 04:15알고리즘

 

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

 

전형적인 그리디 문제! 그리디의 기초! 동전 문제! 입니다.

 

문제 조건 중에서 눈여겨 봐야 할 부분은 A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수 부분입니다.

문제에서 배수라는 조건이 주어졌기 때문에 금액이 큰 동전부터 이용하는 그리디 해법이 적용될 수 있습니다.

 

 

#include <iostream>
using namespace std;

int N, K;
int coin[11];

void input() {
  cin >> N >> K;

  for (int i = 0; i < N; i++) {
    cin >> coin[i];
  }
}

int minCoinNumber() {
  int ans = 0;
  for (int i = N - 1; i >= 0; i--) {
    if (coin[i] <= K) {
      ans += K / coin[i];
      K %= coin[i];
    }
  }
  return ans;
}

void printAnswer(int ans) {
  cout << ans << '\n';
}

int main() {
  ios::sync_with_stdio(false);

  input();
  int ans = minCoinNumber();
  printAnswer(ans);

  return 0;
}

'알고리즘' 카테고리의 다른 글

[백준] 11399번: ATM  (0) 2018.06.02
[백준] 1931번: 회의실 배정  (0) 2018.06.02
[백준] 1967번: 트리의 지름  (0) 2018.05.31
[백준] 1167번: 트리의 지름  (0) 2018.05.31
[백준] 11725번: 트리의 부모 찾기  (0) 2018.05.30