본문 바로가기
공부/알고리즘

[0615] 알고리즘

by Piva 2021. 6. 16.

11047. 동전 0

  어제와 마찬가지로 그리디 알고리즘 문제. 주어지는 동전 자체가 특수하기 때문에(주어지는 동전이 서로 배수 관계), 동전의 가치를 벡터로 받고 뒤에서부터(가장 큰 가치를 가진 동전부터) 확인하여 만들어야 하는 값보다 작은 동전을 찾아내고 차례로 나눠간다.

 

#include <iostream>
#include <algorithm>
#include <vector>

int main()
{
  std::cin.tie(NULL);
  std::ios_base::sync_with_stdio(false);

  int n, k, min, num;  

  std::cin >> n >> k;

  std::vector<int> value(n, 0);
  min = 0;
  num = k;
  
  for (int i = 0; i < n; i++)
  {
    std::cin >> value[i];
  }

  for (int i = n - 1; i >= 0; i--)
  {
    if (num / value[i] != 0)
    {
      min += (num / value[i]);
      num %= value[i];
    }
  }

  std::cout << min << '\n';

  return 0;
}

  조건 때문인지 간단해서 그리디 알고리즘에 해당하는 문제라는 생각이 딱히 들지 않았다. 그냥 아무 문제 푸는 느낌...

'공부 > 알고리즘' 카테고리의 다른 글

[0621] 알고리즘  (0) 2021.06.22
[0620] 알고리즘  (0) 2021.06.21
[0614] 알고리즘  (0) 2021.06.15
[0612] 알고리즘  (0) 2021.06.13
[0611] 알고리즘  (0) 2021.06.12