일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 백준 1018 javascript
- 백준 11047 javascript
- 백준 11047 자바스크립트
- 백준 1449 javascript
- 백준 1449 자바스크립트
- 백준 1449 타입스크립트
- 백준 11047 nodejs
- 백준 1018 nodejs
- 백준 4796 javascript
- JavaScript
- CSS
- 백준 4796 자바스크립트
- 백준 2503 자바스크립트
- 백준 1449 노드
- 백준 4796 nodejs
- 백준 10448 javascript
- 백준 4796 캠핑
- 백준 1018 typescript
- 백준 2503 타입스크립트
- 백준 1018 타입스크립트
- 백준 1449
- 백준 1449 nodejs
- 백준 2503 typescript
- 백준 11047 타입스크립트
- 백준 4796 타입스크립트
- 알고리즘
- 백준 2503 nodejs
- 백준 2503 javascript
- 백준 1018 자바스크립트
- 백준 11047 typescript
- Today
- Total
POTATO THAT WANT TO BE HUMAN
[알고리즘/javascript] 백준 11047번: 동전 0 본문
문제 바로가기
https://www.acmicpc.net/problem/11047
✏️ Problem
준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다.
동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 한다. 이때 필요한 동전 개수의 최솟값을 구하는 프로그램을 작성하시오.
[ 예제 입출력 ]
🧑💻 Solution
[ 설계 ]
예제 1을 통해 문제를 살펴보자.
준규가 가지고 있는 동전은 [1, 5, 10, 50, 100, 500, 1000, 5000, 10000, 50000]
이다.
이 동전들을 사용해 4200원을 만들 수 있는 동전 개수의 최솟값을 구해야 한다.
쉽게 구하기 위해 동전 배열을 내림차순으로 정렬해준다.
동전 배열을 순회하면서 만약 요소가 금액(K)보다 작을 경우 다음 요소로 건너뛴다.
K를 동전 요소를 나눈 몫을 구하고 K를 나머지 값으로 변경한다. 그리고 정답수(answer)에 몫만큼을 더해준다.
예제 1의 4200원으로 시작해보자.
내림차순으로 정렬된 동전 배열은 50000부터 시작되지만, 50000, 10000, 5000은 4200보다 크기 때문에 건너뛴다.
1000 차례가 되면 value 값은 Math.floor(4200 / 1000)
= 4가 된다. 1000원 짜리 4장이 필요하다는 의미이다.
K는 4200 % 1000인 200으로 변경되고 answer은 4가 된다.
다음 요소로 500이 들어가지만 500은 K인 200보다 크기 때문에 건너뛴다.
다음으로 100이 들어가고 value는 Math.floor(200/100)
= 2가 된다. 100원 짜리 2개가 필요하다는 의미이다.
K는 200 % 100인 0이 되고 answer은 4에 2를 더한 6이 된다. K가 0이 되어 반복문이 종료된다.
[ 작성 코드 ]
let [info, ...coinArr] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
let [N, K] = info.split(' ').map(Number);
coinArr = coinArr.map(Number).sort((a, b) => b - a);
let answer = 0;
for(let i = 0; i < N; i++) {
if(K < coinArr[i]) {
continue;
} else {
const value = Math.floor(K / coinArr[i]);
K = K % coinArr[i];
answer += value;
if(K === 0) break;
}
}
console.log(answer)
'알고리즘' 카테고리의 다른 글
[알고리즘/javascript] 백준 1449번: 수리공 항승 (0) | 2024.08.29 |
---|---|
[알고리즘/javascript] 백준 4796번: 캠핑 (1) | 2024.08.29 |
[알고리즘/javascript] 백준 1018번: 체스판 다시 칠하기 (0) | 2024.08.16 |
[알고리즘/javascript] 백준 2503번: 숫자야구 (0) | 2024.08.15 |
[알고리즘/javascript] 백준 10448번: 유레카 이론 (0) | 2024.08.11 |