Algorithm/λ°±μ€€(BOJ)

[λ°±μ€€ BOJ / C++] 5585번: κ±°μŠ€λ¦„λˆ 풀이

meeeeejin 2020. 12. 28. 20:04

문제

 

<문제>

νƒ€λ‘œλŠ” 자주 JOIμž‘ν™”μ μ—μ„œ 물건을 μ‚°λ‹€. JOIμž‘ν™”μ μ—λŠ” μž”λˆμœΌλ‘œ 500μ—”, 100μ—”, 50μ—”, 10μ—”, 5μ—”, 1엔이 μΆ©λΆ„νžˆ 있고, μ–Έμ œλ‚˜ κ±°μŠ€λ¦„λˆ κ°œμˆ˜κ°€ κ°€μž₯ 적게 μž”λˆμ„ μ€€λ‹€. νƒ€λ‘œκ°€ JOIμž‘ν™”μ μ—μ„œ 물건을 사고 μΉ΄μš΄ν„°μ—μ„œ 1000μ—” 지폐λ₯Ό ν•œ μž₯ λƒˆμ„ λ•Œ, 받을 μž”λˆμ— ν¬ν•¨λœ μž”λˆμ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€. 

예λ₯Ό λ“€μ–΄ μž…λ ₯된 예 1의 κ²½μš°μ—λŠ” μ•„λž˜ κ·Έλ¦Όμ—μ„œ 처럼 4개λ₯Ό 좜λ ₯ν•΄μ•Ό ν•œλ‹€.

 

<μž…λ ₯>

μž…λ ₯은 ν•œμ€„λ‘œ 이루어져 있고, νƒ€λ‘œκ°€ μ§€λΆˆν•  돈(1 μ΄μƒ 1000 미만의 μ •μˆ˜) 1κ°œκ°€ μ“°μ—¬μžˆλ‹€.

 

<좜λ ₯>

μ œμΆœν•  좜λ ₯ νŒŒμΌμ€ 1ν–‰μœΌλ‘œλ§Œ λ˜μ–΄ μžˆλ‹€. μž”λˆμ— ν¬ν•¨λœ 맀수λ₯Ό 좜λ ₯ν•˜μ‹œμ˜€.

 

 

www.acmicpc.net/problem/5585

 

5585번: κ±°μŠ€λ¦„λˆ

νƒ€λ‘œλŠ” 자주 JOIμž‘ν™”μ μ—μ„œ 물건을 μ‚°λ‹€. JOIμž‘ν™”μ μ—λŠ” μž”λˆμœΌλ‘œ 500μ—”, 100μ—”, 50μ—”, 10μ—”, 5μ—”, 1엔이 μΆ©λΆ„νžˆ 있고, μ–Έμ œλ‚˜ κ±°μŠ€λ¦„λˆ κ°œμˆ˜κ°€ κ°€μž₯ 적게 μž”λˆμ„ μ€€λ‹€. νƒ€λ‘œκ°€ JOIμž‘ν™”μ μ—μ„œ 물건을 사

www.acmicpc.net

 

 

 

문제 풀이

 

Greedy(νƒμš• 법) μ•Œκ³ λ¦¬μ¦˜μ„ μ΄μš©ν•΄ 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€. μž”λˆμ˜ μ•‘μˆ˜κ°€ 큰 동전뢀터 μ΅œλŒ€ν•œ 많이 κ±°μŠ¬λŸ¬μ€€λ‹€κ³  μƒκ°ν•˜λ©΄ μ΅œμ†Œ λ™μ „μ˜ 개수λ₯Ό ꡬ할 수 μžˆμŠ΅λ‹ˆλ‹€. 

 

change에 κ±°μŠ€λ¦„λˆμ„ μ €μž₯ν•˜κ³ , 500μ—”, 100μ—” 50μ—”, 10μ—”, 5μ—” μˆœμ„œλŒ€λ‘œ κ±°μŠ¬λŸ¬μ€„ 수 μžˆλŠ” λ™μ „μ˜ 개수λ₯Ό κ΅¬ν•˜μ—¬ answer에 λ”ν•©λ‹ˆλ‹€. κ±°μŠ¬λŸ¬μ€€ λ’€μ˜ changeλ₯Ό λ‹€μ‹œ κ³„μ‚°ν•œ λ’€(λ‚˜λ¨Έμ§€ μ—°μ‚°) λ‹€μŒ 동전에 λŒ€ν•œ 계산을 μ§„ν–‰ν•©λ‹ˆλ‹€. 1엔은 λ‹¨μˆœνžˆ 남은 changeλ₯Ό λ”ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€. 

 

 

 

 

μ†ŒμŠ€μ½”λ“œ

 

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
31
32
33
34
// 5585번: κ±°μŠ€λ¦„λˆ
#include <iostream>
 
using namespace std;
 
int main() {1
    ios::sync_with_stdio(false);
    cin.tie(NULL);
 
    int change, answer = 0;
    cin >> change;
    change = 1000 - change;
    
    answer += change / 500;
    change %= 500;
 
    answer += change / 100;
    change %= 100;
 
    answer += change / 50;
    change %= 50;
 
    answer += change / 10;
    change %= 10;
 
    answer += change / 5;
    change %= 5;
 
    answer += change;
 
    cout << answer << "\n";
 
    return 0;
}
cs

 

 

 

 

 

 

 

κ³΅λΆ€ν•œ 것을 μ •λ¦¬ν•œ λ‚΄μš©μž…λ‹ˆλ‹€. μˆ˜μ •ν•  뢀뢄이 μžˆλ‹€λ©΄ μ•Œλ €μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€ :)

 

 

728x90