[ํํธ ๋ฌธ์ 3-5] ๊ทธ๋ฆฌ๋
๋ฌธ์
์ค๊ท๊ฐ ๊ฐ์ง๊ณ ์๋ ๋์ ์ ์ด N์ข ๋ฅ์ด๊ณ , ๊ฐ๊ฐ์ ๋์ ์ ๋งค์ฐ ๋ง์ด ๊ฐ์ง๊ณ ์๋ค.
๋์ ์ ์ ์ ํ ์ฌ์ฉํด์ ๊ทธ ๊ฐ์น์ ํฉ์ K๋ก ๋ง๋ค๋ ค๊ณ ํ๋ค. ์ด๋ ํ์ํ ๋์ ๊ฐ์์ ์ต์๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000)
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋์ ์ ๊ฐ์น Ai๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2์ธ ๊ฒฝ์ฐ์ Ai๋ Ai-1์ ๋ฐฐ์)
์ถ๋ ฅ
์ฒซ์งธ ์ค์ K์์ ๋ง๋๋๋ฐ ํ์ํ ๋์ ๊ฐ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1
10 4200
1
5
10
50
100
500
1000
5000
10000
50000
์์ ์ถ๋ ฅ 1
6
์์ ์ ๋ ฅ 2
10 4790
1
5
10
50
100
500
1000
5000
10000
50000
์์ ์ถ๋ ฅ 2
12
<<ํ์ด>>
package sec01.hint3_1;
import java.util.Scanner;
public class pjh_greedy {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int K = sc.nextInt();
int[] coin = new int[N];
for (int i = 0; i < N; i++) {
coin[i] = sc.nextInt();
}
int count = 0;
for (int i = N - 1; i >= 0; i--) {
//ํ์ฌ ๋์ ์ ๊ฐ์น๊ฐ K๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ผ์ง ๊ตฌ์ฑ๊ฐ๋ฅํ๋ค.
if (coin[i] <= K) {
count += (K / coin[i]);
K = K % coin[i];
}
}
System.out.println(count);
}
}
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
๋ง ๊ทธ๋๋ก greedy(ํ์)์ด๋ค. ์ฆ, ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์์ ๊ฐ์ฅ ์ค์ํ ํค์๋๋ '๋งค ๋ฒ์ ์ ํ์์ ๊ฐ์ฅ ์ข์๋ณด์ด๋ ์ ํ์ ํ์ฌ ์ ์ ํ ๋ต์ ์ฐพ์๊ฐ๋ค.' ์ด๋ค.
์ด๊ฒ์ ํ์ฉํ๋ฉด ์ต์์ ์ฝ์ธ ๊ฐฏ์๋ฅผ ์ป๊ธฐ ์ํด์๋ ์ฝ์ธ ๊ฐ์น๊ฐ ๊ฐ์ฅ ํฐ ๊ฒ์ ๋จผ์ ๊ฑด๋๋ ๊ฒ์ด ์ข๋ค.
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ๊ธฐํ ์กฐ๊ฑด๋ฌธ ์ด์ฉ (0) | 2023.10.29 |
---|---|
์๊ฐ ๋ณต์ก๋์ ์ ํํ ๋ (1) | 2023.10.29 |
[ํํธ ๋ฌธ์ 3-4] ์ ํ (1) | 2023.10.06 |
[ํํธ ๋ฌธ์ 3-3] ์๋ค์ ํฉ2 (0) | 2023.10.06 |
[ํํธ ๋ฌธ์ 3-2] 2์ฐจ์ ๋ฐฐ์ด์ ํฉ (1) | 2023.10.05 |
๋๊ธ