๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/26934)
< The Bus Card >
๋ฌธ์ ํ์ด
dp๋ฅผ ์ฌ์ฉํ์ฌ 100, 200, 500 ๋จ์๋ก ์ถฉ์ ํ์ฌ ์ถฉ์ ํ์๋ฅผ ์ต์ํํ ๊ฐ์ ๊ตฌํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class _26934_ { // The Bus Card
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int k = Integer.parseInt(bf.readLine());
int arr[] = new int[10001];
int coins[] = { 100, 200, 500 };
for (int i = 1; i < 10001; i++) {
for (int j = 0; j < 3; j++) {
if (i % 100 == 0 && i - coins[j] >= 0) {
if (arr[i] == 0) {
arr[i] = arr[i - coins[j]] + 1;
} else {
arr[i] = Math.min(arr[i], arr[i - coins[j]] + 1);
}
}
}
}
if (arr[k] == 0) {
for (int i = k; i < 10001; i++) {
if (arr[i] > 0) {
System.out.println(arr[i]);
break;
}
}
} else {
System.out.println(arr[k]);
}
}
}
๋ณ์)
k : ์ถฉ์ ํ ์
arr : ๊ฐ ๋๋งํผ ์ถฉ์ ํ์
coins : ์ถฉ์ ๊ฐ๋ฅํ ๋จ์
์ถฉ์ ํ ์์ ์ ๋ ฅ๋ฐ๋๋ค. ์ต๋ ๊ฐ์ธ 10000๋งํผ ์ดํด๋ณด๋ฉฐ ์ถฉ์ ํ์๋ฅผ ์ต์๋ก ํ๋ ๊ฐ์ ๊ตฌํ๋ค. ๋ง์ฝ 100์ผ๋ก ๋๋์ด ๋จ์ด์ง๊ณ , ํ์ฌ ๊ฐ - ์ถฉ์ ๊ฐ๋ฅํ ๋จ์ ๊ฐ์ด 0 ์ด์์ด๋ผ๋ฉด ์ต์ ํ์๋ก ์ ๋ฐ์ดํธํ๋ค.
๋ง์ฝ arr[k] ๊ฐ์ด 0์ด๋ผ๋ฉด ๋๋์ด ๋จ์ด์ง์ง ์์ ๋ง์ด ์ถฉ์ ํด์ผ ํ๋ฏ๋ก k๋ณด๋ค ํฐ ๊ฐ ์ค์์ arr[i] ๊ฐ์ด 0๋ณด๋ค ํด ๋ ์ถ๋ ฅํ๋ค. arr[k] ๊ฐ์ด 0์ด ์๋๋ผ๋ฉด ๊ทธ ๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 27041_Leapcow (0) | 2026.04.08 |
|---|---|
| [Baekjoon] 14767_Flow Shop (0) | 2026.04.06 |
| [Baekjoon] 6245_Cow Solitaire (0) | 2026.04.03 |
| [Baekjoon] 9844_Gecko (0) | 2026.04.02 |
| [Baekjoon] 30337_Linas ir mandarinai (0) | 2026.04.01 |