[파이썬]백준 1107 리모컨

Byeonghyeon Kim·2021년 5월 17일
0

알고리즘문제

목록 보기
79/93
post-thumbnail

링크

백준 1107 리모컨


처음에 문제를 보고 DP로 해야하나? 어떻게 하지 한참 고민을 했는데 단순히 완전탐색으로 풀 수 있었던 문제..


정답 코드

target = int(input())
ans = abs(100 - target) # ++ or -- 로 이동할 경우 -> 최댓값
M = int(input())
if M: # 고장난게 있을 경우만 인풋을 받음
    broken = set(input().split())
else:
    broken = set()

# 작은수에서 큰수로 이동할땐 500,000 까지만 보면 되지만
# 반대로 큰수에서 작은수로 내려올수도 있으므로 1,000,000 까지 봐야함
for num in range(1000001): 
    for N in str(num):
        if N in broken: # 해당 숫자가 번호를 눌러서 만들 수 없는 경우엔 스탑
            break
    else: # 번호를 눌러서 만들 수 있는 경우엔
    	# min(기존답, 번호를 누른 횟수 + 해당 번호로부터 타겟까지의 차이)
        ans = min(ans, len(str(num)) + abs(num - target))

print(ans)

알게된 것👨‍💻

  • 가끔은 단순한게 최고
profile
자기 주도 개발전 (개발, 발전)

1개의 댓글

comment-user-thumbnail
2022년 7월 9일

궁금한게 있습니다.
for num in range(1000001):

for num in range(target*2+1):
로 하면 왜 안되는 것일까요?

답글 달기