문제풀이/BOJ

[Python] BOJ/백준 1107번 리모컨

서채리 2021. 8. 30. 22:29

[문제]

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

 

1107번: 리모컨

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

www.acmicpc.net

 


[코드]

import sys

if __name__ == '__main__':
    target = int(sys.stdin.readline().strip())
    m = int(sys.stdin.readline())
    if m:   # 고장난 버튼이 있을 경우
        broken = set(sys.stdin.readline().split())
    else:
        broken = set()

    ans = abs(100 - target) # ++나 --로만 이동할 경우 : 최댓값
    for channel in range(1000001):
        for n in str(channel):
            if n in broken: # 해당 숫자가 고장나있는 경우 break
                break
        else: # min(기존 답, 번호 누른 횟수 + 해당 번호에서 타겟까지의 차)
            ans = min(ans, abs(channel - target) + len(str(channel)))
    print(ans)