티스토리 뷰

알고리즘/백준

[백준] 1107번 리모콘

머어하지 2018. 8. 17. 17:33

1) 생각

큰 고민없이 리모콘 숫자만 맞추는 식으로 코드를 작성한 후 '틀렸습니다'를 맛보고 고민을 해서 코드를 작성하였다.



2) 방안

최대 999999 개만 살펴보면 되므로 모든 Case를 살펴보았고, 각각의 숫자를 검사하여 고장난 버튼의 숫자가 있으면 건너뛰고 그렇지 않으면 N값 과의 차이와 그 숫자를 min으로 저장해 둔 후 min의 최소값이 되는시점(N값과의 차이가 가장 작은시점 -> 0부터 검사하므로 점점 작아지다 최저 값을 찍은 뒤 점점 커짐) 에서 반복문을 빠져나왔다.

이후 한 번 더 틀린것을 확인하고 101 같은경우 위의 반복문만 확인하면 4가 나오겠지만 기본 채널이 100번이므로 +1만 해주면되는것을 발견하고 100과 N의 차와 위에서 구한 최소값을 비교하여 최소값을 출력하였다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import java.util.Scanner;
 
public class Main{
    static int channel;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        channel = sc.nextInt();
        int n = sc.nextInt();
        int[] button = new int[10];
        for(int i=0;i<n;i++)
            button[sc.nextInt()] = -1;
        if(channel==100)
            System.out.println(0);
        else System.out.println(solve(button));
    }
    
    static int min = Integer.MAX_VALUE;
    private static int solve(int[] button) {
        int min = Integer.MAX_VALUE;
        boolean flag = true;
        String t = "";
        String tMin = "";
        for(int i=0;i<1000000;i++) {
            t = i+"";
            flag = true;
            for(int j=0;j<t.length();j++) {
                if(button[t.charAt(j)-'0']==-1) {
                    flag = false;
                    break;
                }
            }
            if(flag) {
                if(min> Math.abs(channel-i)) min = Math.abs(channel-i);
                else if(min<=Math.abs(channel-i)) break;
                tMin = t;
            }
        }
        int result = min+tMin.length();
        int result2 = Math.abs(100-channel);
        return result>result2?result2:result;
    }
}
cs


'알고리즘 > 백준' 카테고리의 다른 글

[백준] 6064번 카잉달력  (0) 2018.08.18
[백준] 14500번 테트로미노  (0) 2018.08.17
[백준] 1261번 탈출  (0) 2018.08.15
[백준] 12851번 숨바꼭질 2  (0) 2018.08.15
[백준] 1261번 알고스팟  (0) 2018.08.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday