사용언어 : C++
문제풀이
* stack 이용하기!
(1) 순서대로 동전 stack에 push하기
(오름차순이라 순서대로 push 가능)
(2) stack top이 k보다 작으면 top으로 사용할 수 있을만큼 answer에 더해주고, k를 그만큼 감소시킨다(k를 top으로 나눈 나머지 값).
(3) stack pop해준다.
전체코드
#include <iostream>
using namespace std;
#include<stack>
int answer;
int main() {
int n, k;
cin >> n >> k;
stack<int> s;
int tmp;
for (int i = 0; i < n; i++) {
cin >> tmp;
s.push(tmp);
}
while (k) {
if (s.top() <= k) {
answer += k / s.top();
k %= s.top();
}
s.pop();
}
cout << answer;
}
총평
실버2라서 겁먹었는데 생각보다 간단해서 당황했던 문제,,,,,,
문제 출처
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
'CodingTest > BOJ' 카테고리의 다른 글
[BOJ 2164] 백준 좌표 압축 풀이 - C++ (0) | 2021.11.19 |
---|---|
[BOJ 2164] 백준 카드2 풀이 - C++ (0) | 2021.11.16 |
[BOJ 20001] 백준 고무오리 디버깅 풀이 - C++ (0) | 2021.09.30 |
[BOJ 1699] 백준 제곱수의 합 풀이 - C++ (0) | 2021.09.30 |
[BOJ 17626] 백준 Four Squares 풀이 - C++ (0) | 2021.09.30 |