[Python] BOJ 1107 - 리모컨

728x90
반응형

https://www.acmicpc.net/problem/1107

 

1107번: 리모컨

첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다.  둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼

www.acmicpc.net

# 처음에 어떻게 풀어야 하지 막막했는데,, 알고보니 그냥 무지성 완전탐색 문제였다.

# M이 0일때는 remove_button이 주어지지않아 예외처리를 해주어야 한다.

   (안하면 EOF Error 발생..)

 

N = int(input())
button = set(i for i in range(10))
M = int(input())
# button에서 사용할 수 없는 remove button을 제거해준다.
if M > 0:
    remove_button = set(map(int,input().split()))
    button -= remove_button
answer = abs(100 - N)

for i in range(1000001):
    tf = True
    for j in range(len(str(i))):
        # 1부터 100만까지 확인해가며 각 자리수를 반복문을 돌며 사용할 수 있는 버튼인지
        # 확인해준다. 사용못하는 버튼이면 tf = False로 바꿔준 뒤 break
        if int(str(i)[j]) not in button:
            tf = False
            break
    
    # tf가 True이면 answer값 갱신 -> 
    # 현재 숫자 누르는 횟수 len(str(i)) + 그 숫자에서 N까지의 차이 abs(i - N)
    if tf:
        answer = min(answer, len(str(i)) + abs(i - N))
print(answer)

(solved.ac 티어: 골드 5)

728x90
반응형
TAGS.

Comments