ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • boj)1107 - 리모컨
    PS/boj 2020. 9. 22. 01:50
    import java.util.*;
    public class boj_1107 {
        static boolean[] broken = new boolean[10];
        static int possible(int c) {
            if (c == 0) {
                if (broken[0]) {
                    return 0;
                } else {
                    return 1;
                }
            }
            int len = 0;
            while (c > 0) {
                if (broken[c % 10]) {
                    return 0;
                }
                len += 1;
                c /= 10;
            }
            return len;
        }
        public static void main(String args[]) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
            for (int i = 0; i < m; i++) {
                int x = sc.nextInt();
                broken[x] = true;
            }
            int ans = Math.abs(n - 100);
            
            for (int i = 0; i <= 1000000; i++) {
                int c = i;
                int len = possible(c);
                if (len > 0) {
                    int press = Math.abs(c - n);
                   
                    if (ans > len + press) {
                        ans = len + press;
                    }
                }
            }
            System.out.println(ans);
        }
    }

     

    - 풀이에 근접한거 같은데 계속 런타임 오류에 걸리고 이유를 못찾겠음

    - 똑같은 풀이인데 나는 BufferedReader와 StringTokenizer를 사용하고 이 풀이는 Scanner의 차이인데

      입력에서 어떤 문제가 있는거 같다.

     

     

    - 이동할 채널의 범위는 0~ 100만쯤 / 100만 이면 그렇게 큰 수가 아니기에 전부 돌아도 됨

    - c의 각 자리를 뽑아 사용가능한 버튼으로 만든건지 체크

    - 정상작동 버튼으로만 이루어진 수가 맞다면 길이 리턴

    - press -> + 또는 - 버튼을 눌러야 하는 횟수

    - len + press : c의 길이와 +,- 누르는 횟수 

    - 기존에 ans = n과 100의 차이의 절대값으로 주고 len + press와 비교

    - ans가 더 작다면 그건 채널 이동 없이 +,- 버튼만으로 이동하는게 최솟값

    - ans가 더 크다면 ans = len + press :: 채널 버튼 누른 후 +,- 이동하는게 최솟값

     

     

    'PS > boj' 카테고리의 다른 글

    boj)6064 - 카잉 달력  (0) 2020.09.22
    boj)14500 - 테트로미노  (0) 2020.09.22
    boj)1476 - 날짜 계산  (0) 2020.09.21
    boj)3085 - 사탕 게임  (0) 2020.09.21
    boj)2309 - 일곱 난쟁이  (0) 2020.09.21
킹수빈닷컴