-
boj)1697 - 숨바꼭질PS/boj 2020. 10. 17. 23:43
import java.io.*; import java.util.*; public class boj_1697 { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static boolean[] v = new boolean[100001]; static int[] dx = {-1, 1}; static Queue<int[]> q = new LinkedList<>(); public static void main(String[] args) throws IOException { StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int K = Integer.parseInt(st.nextToken()); System.out.println(bfs(N, K)); } private static int bfs(int n, int k) { if (n == k) return 0; v[n] = true; q.offer(new int[] {n, 0}); int nx; while (!q.isEmpty()) { int[] now = q.poll(); for (int i = 0; i < 3; i++) { if (i == 2) nx = now[0] * 2; else nx = now[0] + dx[i]; if (nx < 0 || nx > 100000 || v[nx]) continue; if (nx == k) return now[1] + 1; q.offer(new int[] {nx, now[1] + 1}); v[nx] = true; } } return 0; } }
- 실패
- 진짜 어려운 문제 아니고 생각 충분히 할 수 있는데 못 푼게 넘 아쉽고 짜증난다.
- 앞으로 모든 문제는 타임어택 1시간으로 잡고 품
- bfs를 이차원 배열에서만 돌렸지만 1차원에서도 bfs라 생각하고 돌리면 된다
- +, -, * 을 for문에서 i 값에 따라 다르게 해줬음
- q에 넣을때 class 를 따로 생성할 필요 없이 그냥 Int[] 배열 자체로 넣음
'PS > boj' 카테고리의 다른 글
boj)10026 - 적록색약 (0) 2020.10.21 boj)7569 - 토마토 (0) 2020.10.19 boj)4179 - 불! (0) 2020.10.17 boj)1926 - 그림 (0) 2020.10.15 boj)10866 - 덱 (0) 2020.10.14