๐ค ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ํ์, ์์ฌ์์ด ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ.
- ๋ฏธ๋๋ฅผ ์๊ฐํ์ง ์๊ณ ๊ฐ ๋จ๊ณ์์ ๊ฐ์ฅ ์ต์ ์ ์ ํ์ ํ๋ ๊ธฐ๋ฒ
- ์ ํ์ ์๊ฐ๋ง๋ค ๋น์ฅ ๋์์ ๋ณด์ด๋ ์ต์ ์ ์ํฉ๋ง์ ์ซ์ ์ต์ข ์ ์ธ ํด๋ต์ ๋๋ฌํ๋ ๋ฐฉ๋ฒ
- ์ผ๋ฐ์ ์ธ ์ํฉ์์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ํด๋ฅผ ๋ณด์ฅํ ์ ์์ ๋๊ฐ ๋ง๋ค
- ํ์ฌ์ ์ต์ ํด != ์ ์ฒด์ ์ต์ ํด
๐งฆ ์ฌ์ฉํด์ผ ํ๋ ์กฐ๊ฑด
์์ธ์์ ๋์ ์ ๊ฑฐ์ณ ๋ถ์ฐ๊น์ง ๊ฐ๋ ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ์ ํํด๋ผ.
1. ํ์ฌ์ ์ ํ์ด ๋ฏธ๋์ ์ ํ์ ์ํฅ์ ์ฃผ์ง ์๋๋ค.
2. ๋ถ๋ถ์ ์ต์ ํด๊ฐ ๋ชจ์ด๋ฉด ์ ์ฒด์ ์ต์ ํด๊ฐ ๋๋ค.
๊ทธ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฐฉ๋ฒ์ ํต์ฌ์ ์ ๋ ฌ์ด๋ค.
์ด๋ป๊ฒ ์ ๋ ฌํด์ผ ์ด ๋๊ฐ์ง ์กฐ๊ฑด์ ๋ง์กฑํ ์ ์์์ง ์๊ฐํด์ผํ๋ค.
๐ค ๊ทธ๋ฆฌ๋๋ ์ ์ฌ์ฉํ ๊น?
๋น ๋ฅธ ์๋
: ํญ์ ์ต์ ์ ์ ํ์ ํ๊ธฐ ๋๋ฌธ์ dp๋ณด๋ค๋ ๋น ๋ฅธ ์๋๋ฅผ ์๋ํจ.
dp์ ๊ฒฝ์ฐ ํญ์ ์ต์ ํด๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ ๋ คํ๋ค.
ํ์ค ์ธ๊ณ์์๋ 100% ์ต์ ํด๋ฅผ ๋ณด์ฅํ์ง ์์๋ ๋๋ ์ผ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ ์ ์ฌ์ฉํ๋ค.
ex. ๋ค๋น ๊ธธ ์๋ด
๋ํ์ ์ธ ๋ฌธ์
: ๊ฑฐ์ค๋ฆ ๋
- ์ต์ ์ ํด๋ฅผ ๋น ๋ฅด๊ฒ ๊ตฌํ๊ธฐ ์ํด์๋ ๊ฐ์ฅ ํฐ ํํ ๋จ์๋ถํฐ ๋์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ฉด ๋๋ค.
- N์์ ๊ฑฐ์ฌ๋ฌ ์ค์ผ ํ ๋, ๊ฐ์ฅ ๋จผ์ 500์์ผ๋ก ๊ฑฐ์ฌ๋ฌ ์ค ์ ์์ ๋งํผ ๊ฑฐ์ฌ๋ฌ ์ค๋ค.
-> ์ดํ์ 100์, 50์, 10์ ๋์ ์ ์ฐจ๋ก๋๋ก ๊ฑฐ์ฌ๋ฌ ์ค ์ ์์ ๋งํผ ๊ฑฐ์ฌ๋ฌ ์ค๋ค.
- N = 1,260์ผ ๋์ ์์๋ฅผ ํ์ธํด๋ณด์.
- ๊ฐ์ฅ ํฐ ํํ ๋จ์๋ถํฐ ๋์ ๊ฑฐ์ฌ๋ฌ ์ฃผ๋ ๊ฒ์ด ์ต์ ์ ํด๋ฅผ ๋ณด์ฅํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
-> ๊ฐ์ง๊ณ ์๋ ๋์ ์ค์์ ํฐ ๋จ์๊ฐ ํญ์ ์์ ๋จ์์ ๋ฐฐ์์ด๋ฏ๋ก ์์ ๋จ์์ ๋์ ๋ค์ ์ข ํฉํด ๋ค๋ฅธ ํด๊ฐ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ง์ฝ 800์์ ๊ฑฐ์ฌ๋ฌ ์ฃผ์ด์ผ ํ๋๋ฐ ํํ ๋จ์๊ฐ 500์, 400์, 100์์ด๋ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ์์๋ ์ด์ฒ๋ผ ๋ฌธ์ ํ์ด๋ฅผ ์ํ ์ต์ํ์ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ ๋นํ์ง ๊ฒํ ํ ์ ์์ด์ผ ํ๋ค.
์๋ฐ ๋ฌธ์ ํ์ด
public static void main(String[] args) {
int n = 1260;
int cnt = 0;
int[] coinTypes = {500, 100, 50, 10};
for (int i = 0; i < 4; i++){
cnt += n / coinTypes[i];
n %= coinTypes[i];
}
System.out.println(cnt); // 6
}
๋ ๋ง์ ๊ทธ๋ฆฌ๋ ๋ฌธ์ ํ์ธํ๊ธฐ
๐จ reference
https://www.youtube.com/watch?v=_IZuE7NIeW4
'JAVA > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ(๋ฒ๋ธ์ ๋ ฌ, ์ ํ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ) (0) | 2023.03.12 |
---|---|
[JAVA] ๊น์ด ์ฐ์ ํ์(DFS) ์ ์/์ค์/ํ์ ์ํ (0) | 2022.10.09 |