728x90
- 문제
https://www.acmicpc.net/problem/5585
5585번: 거스름돈
타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사
www.acmicpc.net
- 풀이법 ( 알고리즘 )
그리디 알고리즘의 기초 문제이다. 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있기 때문에 지불한 후 받을 돈에서 500엔, 100엔, 50엔, 10엔, 5엔, 1엔을 뺄 수 있을만큼 빼고 그 개수를 출력하면 될 듯하다.
아래 코드들을 본다면 아래로 갈 수록 코드가 깔끔해지고 있다. 여러번 문제를 풀다보니 조금 더 코드가 간결해진듯하다.
- 풀이 - C++ ( C )
#include <iostream>
using namespace std;
int paid , cnt = 0; // paid : 타로가 이미 지불한 돈 , cnt : 잔돈의 개수
int main(void)
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
//input
cin >> paid;
paid = 1000 - paid;
//solve
if (paid >= 500)
{
while (paid >= 500) {
paid -= 500;
cnt++;
}
}
if (paid >= 100)
{
while (paid >= 100) {
paid -= 100;
cnt++;
}
}
if (paid >= 50)
{
while (paid >= 50) {
paid -= 50;
cnt++;
}
}
if (paid >= 10)
{
while (paid >= 10) {
paid -= 10;
cnt++;
}
}
if (paid >= 5) {
while (paid >= 5) {
paid -= 5;
cnt++;
}
}
if (paid >= 1) {
while (paid >= 1) {
paid -= 1;
cnt++;
}
}
//output
cout << cnt;
return 0;
}
- 풀이 - JAVA
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int paid = sc.nextInt();
paid = 1000 - paid;
int cnt = 0;
while(paid >= 500) {
paid -= 500;
cnt++;
}
while(paid >= 100) {
paid -= 100;
cnt++;
}
while(paid >= 50) {
paid -= 50;
cnt++;
}
while(paid >= 10) {
paid -= 10;
cnt++;
}
while(paid >= 5) {
paid -= 5;
cnt++;
}
while(paid >= 1) {
paid -= 1;
cnt++;
}
System.out.println(cnt);
}
}
- 풀이 - PYTHON
n = int(input())
n = 1000 - n
cnt = 0
while n >= 500:
n -= 500
cnt+=1
while n >= 100:
n -= 100
cnt+=1
while n >= 50:
n -= 50
cnt+=1
while n >= 10:
n -= 10
cnt+=1
while n >= 5:
n -= 5
cnt+=1
while n >= 1:
n -= 1
cnt+=1
print(cnt)
- 풀이 - Node.js
let m = parseInt(require("fs").readFileSync("/dev/stdin").toString());
let nowM = 1000 - m;
const coin = [500,100,50,10,5,1];
let count = 0;
for(let i = 0; i < coin.length; i++)
{
let tmp = Math.floor(nowM / coin[i]);
nowM -= tmp * coin[i];
count += tmp;
}
console.log(count);
728x90
'PS > 백준' 카테고리의 다른 글
[ 백준 ] 10026번 : 적록색약 - ( C++/C ) (0) | 2022.03.05 |
---|---|
[ 백준 ] 1010번 : 다리놓기 - (C++/C , JAVA/자바 , PYTHON/파이썬 , Node.JS/자바스크립트 ) (0) | 2022.03.03 |
[ 백준 ] 1026번 : 보물 - (C++/C, JAVA/자바, PYTHON/파이썬) (0) | 2022.02.28 |
[ 백준 ] 6603번 : 로또 - ( C++ / C , JAVA/자바, PYTHON/파이썬 ) (0) | 2022.02.27 |
[ 백준 ] 2523번 : 별찍기 - 13 - ( C++ / C, JAVA/자바, PYTHON/파이썬 ) (0) | 2022.02.27 |