package com.ji.beakjoon.bruteforce;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Tournament {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] personInfos = br.readLine().split(" ");
int N = Integer.parseInt(personInfos[0]);
int kimNumber = Integer.parseInt(personInfos[1]);
int imNumber = Integer.parseInt(personInfos[2]);
int result = 0;
//토너먼트기 때문에 2를 나눈 값 , 나머지 값이 부모 노드 값이 됨
//부모노드가 같은 번호 일때 루프 탈출
while (kimNumber != imNumber) {
kimNumber = kimNumber/2 + kimNumber%2;
imNumber = imNumber/2 + imNumber%2;
result++;
}
System.out.println(result);
}
}
package com.ji.beakjoon.bfs;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
/**
* 스타트링크
*
* @author ji
*
*/
/*
* 1. 시작점부터 큐에 넣어 up, down 이동경로를 다시 큐에 넣는다.
*
* 2. 큐에서 나온 점이 도착점과 같다면 종료한다.
*
* 3. 범위가 0보다 작거나 최대값인 F보다 크다면 패스한다.
*
*/
public class StartLink {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] floorInfos = br.readLine().split(" ");
int F = Integer.valueOf(floorInfos[0]);
int S = Integer.valueOf(floorInfos[1]);
int G = Integer.valueOf(floorInfos[2]);
int U = Integer.valueOf(floorInfos[3]);
int D = Integer.valueOf(floorInfos[4]);
// 방문한 층 배열에 저장
int[] visitFloorArr = new int[F + 1];
Queue<Integer> que = new LinkedList<Integer>();
que.offer(S);
visitFloorArr[S] = 1;
int result = -1;
while (!que.isEmpty()) {
int cur = que.poll();
if (cur == G) {
result = visitFloorArr[cur] - 1;
System.out.println(result);
return;
}
// Up 버튼을 눌렀을 때 꼭대기 층보다 작거나 같을 경우
// 방문 하지 않은 경우
if (cur + U <= F && visitFloorArr[cur + U] == 0) {
visitFloorArr[cur + U] = visitFloorArr[cur] + 1;
que.add(cur + U);
}
// Down 버튼을 눌렀을때 건물은 1층 부터 시작 하기 때문에 0보다 커야함
// 방문 하지 않은 경우
if (cur - D > 0 && visitFloorArr[cur - D] == 0) {
visitFloorArr[cur - D] = visitFloorArr[cur] + 1;
que.add(cur - D);
}
}
//(만약, U층 위, 또는 D층 아래에 해당하는 층이 없을 때는, 엘리베이터는 움직이지 않는다)
System.out.println("use the stairs");
}
}