Tags
- ๋๋น ์ฐ์ ํ์
- ๊ต์ฌ
- BOJ
- ๊ตฌํ
- DP
- sort
- BFS
- ๊น์ด ์ฐ์ ํ์
- ๋ฐฑํธ๋ํน
- stack
- Brute Force Algorithm
- Java
- ์ ๋ ฌ
- Study
- PGM
- ๊ทธ๋ํ ํ์
- ์ ์๋ก
- Dynamic Programming
- ์ํ
- CodingTest
- ์๋ฎฌ๋ ์ด์
- queue
- dfs
- ๋ฌธ์์ด
- SpringBoot
- Python
- LV2
- greedy
- ์๋ฃ๊ตฌ์กฐ
- ๊ทธ๋ํ ์ด๋ก
Archives
๊ธฐ๋ก๋ฐฉ
Lv.2 : ์ซ์ ๋ณํํ๊ธฐ ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- ์ ์ x, y, n์ด ์ ๋ ฅ๋๋ค.
- x๋ฅผ 3๊ฐ์ง ์ฐ์ฐ (+n, x2, x3) ์ผ๋ก y๋ฅผ ๋ง๋๋ ์ต์ ์ฐ์ฐ ํ์๋ฅผ ๋ฐํํ๋ค.
- y๋ฅผ๋ง๋ค ์ ์์ผ๋ฉด -1์ ๋ฐํํ๋ค.
๐ธ ๋ฌธ์ ํ์ด ๐ธ
- BFS์ DP๋ก ํ์ดํ ์ ์๋ค.
- BFS๋ ๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ฒ์ ๋ฐฉ๋ฌธํ์ผ๋ฉด ๋ค์ 3๊ฐ์ง ์ฐ์ฐ์ ์ํํด์ y๋ฅผ ์ฐพ์๊ฐ๋๋ฐ, y๋ฅผ ์ด๊ณผํ๊ฑฐ๋ ์ด๋ฏธ ๋ฐฉ๋ฌธ ํ์ผ๋ฉด ์ ์ธํ๋ค.
- DP๋ x๋ถํฐ y๊น์ง ์ธ๋ฑ์ค๋ฅผ ๋๋ ค๊ฐ๋ฉฐ ๊ณ์ฐํ๋๋ฐ, ์ฒ์ ๋ฐฉ๋ฌธ์ด๋ฉด ํ์ฌ ๊ฐ์ ๋ฃ๊ณ ์ด๋ฏธ ๊ฐ์ด ์์ผ๋ฉด ๋ ์์ ๊ฐ์ ์ ํํ๋ ๋ฐฉ์์ผ๋ก y๋ฅผ ๋ง๋ค์ด ๊ฐ๋ค.
- ์๋ ํ์ด๋ DP๋ฐฉ์์ ์ ํํ๋ค.
๐ธ ์ฝ๋ ๐ธ
class Solution {
public int solution(int x, int y, int n) {
int[] dp = new int[y + 1];
for (int i = x + 1; i <= y; i++) {
dp[i] = Integer.MAX_VALUE;
}
for (int i = x; i < y; i++) {
if (dp[i] < Integer.MAX_VALUE) {
if (i + n <= y)
dp[i + n] = Math.min(dp[i + n], dp[i] + 1);
if (i * 2 <= y)
dp[i * 2] = Math.min(dp[i * 2], dp[i] + 1);
if (i * 3 <= y)
dp[i * 3] = Math.min(dp[i * 3], dp[i] + 1);
}
}
return dp[y] == Integer.MAX_VALUE ? -1 : dp[y];
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- intํ ๋ฐฐ์ด dp์ ์ธ๋ฑ์ค x+1 ~ y ์ Integer.MAX_VALUE ๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ค.
- x๋ถํฐ y-1๊น์ง ๊ณ์ฐ์ ๋ฐ๋ณตํ๋ค.
- dp[i]๊ฐ Integer.MAX_VALUE๋ฉด ๋ฐฉ๋ฌธํ์ง ์์ ์ธ๋ฑ์ค์ด๋ฏ๋ก ์ ์ธํ๋ค.
- ๋ฌธ์ ์์ ์ฃผ์ด์ง 3๊ฐ์ง ์ฐ์ฐ์ ์ํํ๋ค.
- ์ธ๋ฑ์ค๊ฐ y๋ฅผ ๋์ง ์์ผ๋ฉด, ์ ์ฅ ๋ ๊ฐ๊ณผ ํ์ฌ ๊ฐ ์ค ์ต์๊ฐ์ ์ ์ฅํ๋ค.
- dp[y]๋ฅผ ๋ฐํํ๋ค. ๋ง์ฝ ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด -1์ ๋ฐํํ๋ค.
๐ธ end ๐ธ
- ์ฒ์์๋ BFS๋ก ํ์ดํ๋๋ฐ, ์๊ฐ์ด๊ณผ๊ฐ ๋์ DP๋ก ๋ณ๊ฒฝํ๊ณ ์ ํ๋ค.
- BFS๋ก ํ์ดํ๋ฉด ์๋๋ ๋ฌธ์ ์ธ ์ค ์์๋๋ฐ, ๋ฐฉ๋ฌธ์ฒดํฌ๋ฅผ ํ์ง ์์์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํฐ์ ธ๋ฒ๋ฆฐ ํ์ด์๋ค.
- ์ฝํ ๋ฅผ ํ๋ ์ํ์๋๋ ์์ ์์๋ DFS, BFS๋ฌธ์ ๋ฅผ ์ด๋ณด์ ์ธ ์ค์๋ก ํ๋ฆฌ๊ฒ ๋๋ ๋ง์ด ๋ฐ์ฑํ๊ฒ ๋๋ค...
- DP๋ก ํ์ด ํ ๋๋ ์๋ชป ์๊ฐ ํ ๋ถ๋ถ์ด ์์ด์ ์ค๋ฅ๋ฅผ ์ฐพ๋๋ฐ ์๊ฐ์ด ๊ฑธ๋ ธ๋ค.
- ๊ฒฐ๋ก ๋ถํฐ ๋งํ์๋ฉด ์ธ๋ฑ์ค๋ฅผ ์ฒ์ ๋ฐฉ๋ฌธํ์๋์ ์๋ ํ์๊ฐ ๋ฐ๋ก ์ต์๊ฐ์ด ๋๋ ์ค ์๊ณ ๊ทธ๋๋ก ์ ์ฅํด๊ฐ๋ค.
- BFS๋ฅผ ์๋ํ๋ค๊ฐ ๋ฐ๊ฟ์ ํท๊น๋ฆฐ ๊ฒ ๊ฐ๋ค.
- ์ต์ด๋ก dp[i]๊ฐ์ ๋ณ๊ฒฝํ์๋ ๋ณด๋ค ๋ค๋ฅธ ์ฐ์ฐ์ ํตํด ๋ ๋ฎ์ ํ์๋ก ๋์ฐฉํ ์ ์์๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.2 : ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ (0) | 2023.11.30 |
---|---|
Lv.2 : ์๊ฒฉ ์์คํ (0) | 2023.11.29 |
Lv.2 : [PCCP ๊ธฐ์ถ๋ฌธ์ ] 2๋ฒ (0) | 2023.11.24 |
Lv.2 : ๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ (0) | 2023.11.23 |
Lv.2 : ์คํ์ฑํ ๋ฐฉ (0) | 2023.11.23 |