Greedy
Greedy
๊ทธ๋ฆฌ๋(ํ์) ์๊ณ ๋ฆฌ์ฆ (Greedy)
: ๊ทธ ์๊ฐ์๊ฐ๋ง๋ค ์ต์ ์ด๋ผ๊ณ ์๊ฐ๋๋ ๊ฒฐ์ ์ ํ๋ ๋ฐฉ์์ผ๋ก ์งํํ์ฌ ์ต์ข ํด๋ต์ ๋๋ฌํ๋ ๋ฌธ์ ํด๊ฒฐ ๋ฐฉ์ ๊ฒฝ์ฐ์ ์๊ฐ ์กด์ฌํ ๊ฒฝ์ฐ, ๊ฒฝ์ฐ๋ฅผ ์ ํํด์ผํ ๋ ์ต์ ์ด๋ผ๊ณ ์๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ํํ๋ ์๊ณ ๋ฆฌ์ฆ
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์
: ์ง๋ถํด์ผ ํ๋ ๊ฐ์ด ์์๋, ๋์ ์ผ๋ก ๋์ ์๊ฐ ๊ฐ์ฅ ์ ๊ฒ ์ง๋ถํ๋ ๋ฐฉ์
์ต์ ์ ์ฅ ํธ๋ฆฌ (MinimumSpanningTree, MST)
: ์ฌ์ฉ๋ ๊ฐ์ ๋ค์ ๊ฐ์ค์น ํฉ์ด ์ต์์ธ ํธ๋ฆฌ
MST์ ํน์ง
๊ฐ์ ์ ๊ฐ์ค์น์ ํฉ์ด ์ต์์ฌ์ผํ๋ค
n๊ฐ์ ์ ์ ์ ๊ฐ์ง๋ ๊ทธ๋ํ์ ๋ํด ๋ฐ๋์ (n-1)๊ฐ์ ๊ฐ์ ๋ง์ ์ฌ์ฉํด์ผ ํ๋ค
์ฌ์ดํด์ด ํฌํจ๋์ด์๋ ์๋๋ค
MST์ ์ข ๋ฅ : Greedy, Prim's, Kruskal's
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์์ (Baek5585)
ํ๋ก๋ ์์ฃผ JOI์กํ์ ์์ ๋ฌผ๊ฑด์ ์ฐ๋ค.
JOI์กํ์ ์๋ ์๋์ผ๋ก 500์, 100์, 50์, 10์, 5์, 1์์ด ์ถฉ๋ถํ ์๊ณ ,
์ธ์ ๋ ๊ฑฐ์ค๋ฆ๋ ๊ฐฏ์๊ฐ ๊ฐ์ฅ ์ ๊ฒ ์๋์ ์ค๋ค. ํ๋ก๊ฐ JOI์กํ์ ์์ ๋ฌผ๊ฑด์ ์ฌ๊ณ ์นด์ดํฐ์์ 1000์ ์งํ๋ฅผ ํ์ฅ ๋์ ๋,
๋ฐ์ ์๋์ ํฌํจ๋ ์๋์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค
// ์
๋ ฅ : 380 ์ถ๋ ฅ : 4
public class Baek5585 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int money = 1000 - sc.nextInt();
int[] array = { 500, 100, 50, 10, 5, 1 };
int idx = 0;
int ans = 0;
while (money != 0) {
int change = money / array[idx];
money -= change * array[idx++];
ans += change;
}
System.out.println(ans);
}
}a = 1000 - int(input())
b = [500, 100, 50, 10, 5, 1]
count = 0
for i in b:
count += a // i
a %= i
print(count)Last updated
Was this helpful?