리모컨
1. 조건
- 초기 채널 : 100번
- N : 이동 채널 ( 0 <= N <= 500,000)
- M : 고장난 버튼 ( 0 <= M <= 10)
- 채널의 갯수 : 무한대
2. 출력
- 100번에서 N번 채널로 이동하기 위한 최소의 수
3. 방식
- 채널이 무한대라 위에서 내려오는 경우도 생각하여 0부터 500,000*2까지 수 범위를 반복하여 최소를 구함
4. 코드
N = int(input())
M = int(input())
broken = set()
if M:
broken = set(input().split())
cnt1 = abs(N - 100)
cnt2 = int(1e9)
for num in range(1000001):
num = str(num)
if not set(num) & broken:
tmp = abs(int(num) - N) + len(num)
if tmp < cnt2:
cnt2 = tmp
print(min(cnt1, cnt2))
- 그리디한 방법도 좋지만, 시간을 보고 완전 탐색도 시간 내 풀기 위한 방법이다.