ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
킹수빈닷컴