현재 보고 있는 채널(100)에서 목표 채널(N)로 이동하기 위해 고장난 버튼 제외하고 최소 버튼 클릭 횟수를 구하는 문제.
입력
출력
초기 값 설정
|N - 100| (즉, +, - 버튼만으로 이동할 때의 횟수)가능한 모든 채널(0~999999)을 탐색하면서,
최소 클릭 횟수를 출력
def min_press(N, broken_buttons):
min_count = abs(N - 100) # +1, -1 만 사용했을 때 눌러야 하는 버튼
for num in range(1000000): # 가능한 모든 채널 탐색
str_num = str(num)
for ch in str_num: # 각 자릿수가 있는 지 확인
if int(ch) in broken_buttons:
break
else: # 고장난 버튼이 포함되지 않았다면 실행
min_count = min(min_count, len(str_num) + abs(num - N)) # 버튼 눌리는 데 부터, N까지 가는 수
return min_count
# 입력 처리
N = int(input().strip()) # 목표 채널
M = int(input().strip()) # 고장난 버튼 개수
broken_buttons = set(map(int, input().split())) if M else set()
# 최소 버튼 클릭 횟수 출력
print(min_press(N, broken_buttons))
N이 최대 6자리 수이므로, 0부터 999999까지 확인하면 된다.