01-08 08:57
Recent Posts
Recent Comments
Tags
- ์กํ๊ณ
- Java
- ํ์ด์๊ณต๋ชจ์
- python
- ์๋ฐ
- RaspberryPi
- JOBํ๊ณ
- ์จ์ผ๋ํ
- ํ์ด์
- ํ๋ก๋ณด๋ ธ
- SQL
- mysql
- DATABASE
- TSQL
- Naver Cloud
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- DB
- ICT
- ์คํฝ๋ ํ
- ์๋์ด๋ ธ
- appetizer
- ์คํฝ์ค๋น
- ICT๋ฉํ ๋ง
- ict๊ณต๋ชจ์
- API๋ง์ผํ๋ ์ด์ค
- Spring
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ํ์ด์ฌ
- linux
- ์ด๋ธ์
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค BFS 12851 :: ์จ๋ฐ๊ผญ์ง 2 ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
์๋น์ด๋ ๋์๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ N(0 ≤ N ≤ 100,000)์ ์๊ณ , ๋์์ ์ K(0 ≤ K ≤ 100,000)์ ์๋ค. ์๋น์ด๋ ๊ฑท๊ฑฐ๋ ์๊ฐ์ด๋์ ํ ์ ์๋ค. ๋ง์ฝ, ์๋น์ด์ ์์น๊ฐ X์ผ ๋ ๊ฑท๋๋ค๋ฉด 1์ด ํ์ X-1 ๋๋ X+1๋ก ์ด๋ํ๊ฒ ๋๋ค. ์๊ฐ์ด๋์ ํ๋ ๊ฒฝ์ฐ์๋ 1์ด ํ์ 2*X์ ์์น๋ก ์ด๋ํ๊ฒ ๋๋ค.
์๋น์ด์ ๋์์ ์์น๊ฐ ์ฃผ์ด์ก์ ๋, ์๋น์ด๊ฐ ๋์์ ์ฐพ์ ์ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ด ๋ช ์ด ํ์ธ์ง ๊ทธ๋ฆฌ๊ณ , ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ผ๋ก ์ฐพ๋ ๋ฐฉ๋ฒ์ด ๋ช ๊ฐ์ง ์ธ์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ ๋ฒ์งธ ์ค์ ์๋น์ด๊ฐ ์๋ ์์น N๊ณผ ๋์์ด ์๋ ์์น K๊ฐ ์ฃผ์ด์ง๋ค. N๊ณผ K๋ ์ ์์ด๋ค.
์ถ๋ ฅ
- ์ฒซ์งธ ์ค์ ์๋น์ด๊ฐ ๋์์ ์ฐพ๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
- ๋์งธ ์ค์๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ผ๋ก ์๋น์ด๊ฐ ๋์์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1)
5 17
์์ ์ถ๋ ฅ 1)
4
2
โ
๐ป Main.java
์๋น์ด์ ํ์ฌ ์์น๊ฐ 5์ด๊ณ , ๋์์ ์์น๊ฐ 17์ผ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
n์์ n-1, n+1,n*2 3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ป์ด๋๊ฐ๋ค๊ณ ์๊ฐํด๋ณด์. BFS๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์ดํด๋ดค๋ค.
4์์ 3, 5,8๋ก ๋ป์ด๊ฐ๋ 5๋ ์ด๋ฏธ level1์์ ๋์๊ธฐ ๋๋ฌธ์ level2์์ 5๋ฅผ ๋ฐฉ๋ฌธํ ํ์๊ฐ ์๋ค. (์ฆ 5๋ 1์ด๋ฉด ๋๋ฌ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ 2์ด์ ๊ฑธ์ณ 5๋ฅผ ๋ฐฉ๋ฌธํ ํ์๊ฐ ์๋ค๋ ๋ป) 3์์ 2,4,6์ผ๋ก ๋ป์ด๋๊ฐ ๋๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก 4, 6์ ๋ฐฉ๋ฌธํ์ง ์์๋ ๋๋ค.
/* ๋ฐฑ์ค - 12851 :: ์จ๋ฐ๊ผญ์ง 2 */
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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[] min = new int[100001];
Queue<Integer> q = new LinkedList<>();
q.add(n);
min[n] = 1;
int cnt = 0;
while(!q.isEmpty()) {
int cur = q.poll();
// ๋์์ ๋ง๋๋ฉด ์นด์ดํธ ์ฆ๊ฐ
if(cur == k)
cnt++;
// ์์ผ๋ก ํ์นธ ๊ฑธ์ด๊ฐ๊ธฐ
if(cur - 1 >= 0 && cur - 1 <= 100000) {
if(min[cur - 1] == 0 || min[cur - 1] >= min[cur] + 1) {
min[cur - 1] = min[cur] + 1;
q.add(cur - 1);
}
}
// ๋ค๋ก ํ์นธ ๊ฑธ์ด๊ฐ๊ธฐ
if(cur + 1 >= 0 && cur + 1 <= 100000) {
if(min[cur + 1] == 0 || min[cur + 1] >= min[cur] + 1) {
min[cur + 1] = min[cur] + 1;
q.add(cur + 1);
}
}
// ์๊ฐ์ด๋
if(cur * 2 >= 0 && cur * 2 <= 100000) {
if (min[cur * 2] == 0 || min[cur * 2] >= min[cur] + 1) {
min[cur * 2] = min[cur] + 1;
q.add(cur * 2);
}
}
}
System.out.println(min[k] - 1);
System.out.println(cnt);
br.close();
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 3190 :: ๋ฑ (0) | 2022.07.14 |
---|---|
[BAEKJOON] ๋ฐฑ์ค BFS 14497 :: ์ฃผ๋์ ๋ (0) | 2022.07.09 |
[BAEKJOON] ๋ฐฑ์ค BFS 2636 :: ์น์ฆ (0) | 2022.06.15 |
[BAEKJOON] ๋ฐฑ์ค BFS 2589 :: ๋ณด๋ฌผ์ฌ (0) | 2022.06.15 |
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ฆฌ๋ 10709 :: ๊ธฐ์์บ์คํฐ (0) | 2022.06.13 |
Comments