1. ๋ฌธ์ ์ค๋ช ๐
์ค๋ช ์ด ์ง๊ด์ ์ด๋ผ ์ถ๊ฐ ์ค๋ช ์๋ต
2. ์ ๊ทผ ๋ฐฉ์ ๐๏ธ
KEY WORD
: Greedy Algorithm
๋์ ์๊ฐ ๋ฌดํํ๊ธฐ ๋๋ฌธ์ Greedy ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๋ฉด ๋๋ค. Greedy ์๊ณ ๋ฆฌ์ฆ์ ๋งค ์๊ฐ ์ต์ ์ ์ ํ์ ํ๋ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ์ต์ ์ ์ ํ์ ๊ฐ๋ฅํํ ํฐ ๋จ์์ ๋์ ์ ์ฌ์ฉํ์ฌ ๋์ ๊ฐ์๋ฅผ ์ค์ด๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ ๋จ์๋ฅผ ํ๋์ฉ ํ์ผ๋ฉฐ, K์์ ์ต๋ํ ํฐ ๋จ์์ ๋์ ์ผ๋ก ์ฐจ๊ฐํ๋ค.
- ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋์ ์กฐํ
- ๋ง์ฝ ํ์ฌ ์กฐํ ์ค์ธ ๋์ ์ผ๋ก K์์ ๋๋ ์ ์๋ค๋ฉด? ๋๋ ๋ชซ๋งํผ ๋์ ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฒ์์ผ๋ก ๋ชซ์ ๋ต์ ๋์ ์ํด
- K์์ (ํด๋น ๋์ ์ ๋จ์ x ๋ชซ) ๋งํผ ์ฐจ๊ฐ๋์์ผ๋ฏ๋ก, ๋๋จธ์ง๋งํผ๋ง ๋จ์์๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ K = K%๋จ์๋ก ๊ฐฑ์ ํ๋ค.
- 1,2,3๋ฒ์ K == 0์ด ๋ ๋๊น์ง ๋ฐ๋ณต
3. ์ฝ๋ ์๊ฐ ๐
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
int [] units = new int [N];
for(int i = 0; i < N; i++){
units[i] = Integer.parseInt(br.readLine());
}
int ans = 0;
for(int i = N-1; i >= 0; i--){
if(K/units[i] != 0) {
ans += K/units[i];
K = (K%units[i]);
}
if(K == 0) break;
}
System.out.println(ans);
}
}
4. ๋ฐฐ์ด ๊ฒ๋ค ๐ฏ
K์์ ๊ฐฑ์ ํ๋ ๊ณผ์
K = (K%units[i]);
์ด ๋ถ๋ถ์ ์ฒ์์๋
K -= (K/units[i])*units[i];
์ด๋ ๊ฒ ํ์๋๋ฐ, ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ '์... ๋๋จธ์ง๋ง ๋จ๊ธฐ๋ฉด ๋๋๊ตฌ๋! 'ํ๊ณ ๊นจ๋ฌ์์ ๋ค์ ๊ณ ์ณค๋ค.
Greedy ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ๊ฐ์ ์ตํ๋ค.