최종 제출 코드
number = int(input())
cnt = int(input())
btn = [True] * 10
# 고장난 버튼이 있을 때만 입력 받음
if cnt != 0:
btn_list = list(map(int, input().split()))
for i in btn_list:
btn[i] = False
# 최소 버튼 누르는 수를 구하는 함수
def solution(num):
# 숫자버튼을 누르지 않고 방향버튼만을 이용할 때의 값을 result로 초기화
result = abs(num-100)
for i in range(1000001):
chk = True
for j in range(len(str(i))):
if btn[int(str(i)[j])] == False:
chk = False
break
if chk == True:
result = min(abs(i-num)+len(str(i)), result)
return result
answer = solution(number)
print(min(abs(number - 100), answer))
◼ 가능한 케이스를 모두 검사
i를 문자열로 변환하여 문자열 i를 구성하는 버튼들이 모두 작동가능한 버튼인지 검사i를 구성하는 숫자들이 모두 작동가능한 경우, 문자열 i의 자릿수와 i에서 num까지 이동하기 위한 방향키 버튼의 개수를 더하여 그 값이 result보다 작을 경우 갱신한다.