[백준] 1107번 (python 파이썬) 리모컨

2021. 3. 23. 21:42발돋움/알고리즘

728x90
반응형

728x90
bt = list(range(10)) # 1~9까지의 버튼 만들기
n = int(input()) #채널
t = int(input()) #고장난 버튼 수
if t != 0:
    error = list(map(int, input().split()))
    for i in range(t): # 고장난 버튼 제거
        bt.remove(error[i])

min_cnt = abs(100 - n) # +버튼 혹은 -버튼 으로만 움직이는 경우
bt = list(map(str, bt))
# 이동하려는 채널은 500,000까지 이나 그 이상의 채널이 있으므로 1,000,000까지 돌아보기
for num in range(1000001):
    num = str(num) #문자열로 바꿔주어 한글자씩 접근
    size = len(num) # 불필요한 연산제거
    for j in range(size):
        if num[j] not in bt:
            break
        elif j + 1 == size: #인덱스와 버튼수가 같을때:
            min_cnt = min(min_cnt, abs(n - int(num)) + size)
print(min_cnt)

아무리해도 잘 안풀려서 다른 사람의 소스코드를 참고했음에도 계속 런타임 나서 힘들었다.

예외처리가 많다..반례참고 www.acmicpc.net/board/view/46120

 

728x90
반응형