BOJ_5585 거스름돈
- TOC {:toc}
이 글은 백준 온라인 저지의 5585번 문제를 풀이한 것을 모아놓은 글입니다.
일종의 연습 기록이며 제가 정답을 받은 코드와 참고할만한 다른 코드를 같이 기록합니다. 필요한 경우 코드에 대한 해설을 기록합니다만 코드는 통과했어도 해설은 틀릴 수 있기 때문에 가볍게 참고해주시길 부탁드립니다. 피드백은 편하신 방법으로 자유롭게 주시면 감사하겠습니다.
2021.07.12 (Python)
메모리 | 시간 | 코드 길이 |
---|---|---|
29200 KB | 64 ms | 158 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
문제 이해 | 09:53:39 | 09:54:32 | |
풀이 생각 | 09:54:33 | 09:54:54 | |
코딩 | 09:54:55 | 09:57:45 |
charge = 1000 - int(input())
count = 0
for coin in [500, 100, 50, 10, 5, 1]:
num = charge // coin
count += num
charge -= coin * num
print(count)
아이디어 & 풀이
가장 적은 수의 거스름돈을 내기 위해서는 액수가 큰 잔돈으로 낼 수 있는 최대의 금액을 치러야 한다.
- 500엔부터 내림차순으로 잔돈을 순회하면서
- 나눈 몫을 개수에 더하고
- 해당 금액을 내야 할 금액에서 빼주면 된다.
2022.04.06 (JS)
메모리 | 시간 | 코드 길이 |
---|---|---|
9600 KB | 120 ms | 354 B |
단계 | 시작 시각 | 끝난 시각 | 걸린 시간 |
---|---|---|---|
문제 이해 | 03:00:42 | 03:01:25 | |
풀이 생각 | 03:01:26 | 03:01:47 | |
코딩 | 03:01:48 | 03:05:23 |
const fs = require("fs");
const input = fs.readFileSync('/dev/stdin').toString().trim();
function main() {
let count = 0;
units.forEach((unit) => {
count += parseInt(money / unit);
money = money % unit;
});
return count;
}
const units = [500, 100, 50, 10, 5, 1];
let money = 1000 - parseInt(input);
console.log(main());
-
ps-python ps-js