https://www.acmicpc.net/problem/1107
실패이유
: 구현실패
def possible(n): # 해당 번호로 숫자 버튼을 눌러 이동가능한지 확인
for digit in list(str(n)):
if digit in breakdown:
return False
return True
wanted = int(input())
if int(input()) == 0:
breakdown = []
else:
breakdown = list(input().split())
ans = wanted - 100
if ans < 0:
ans = -ans
for i in range(1000000): # 0 ~ 100만의 숫자에 대해 모두 검사
if possible(i):
digit_moved_and_pushed = len(str(i)) + abs(i - wanted)
ans = min(ans, digit_moved_and_pushed)
print(ans)
- 0 ~ 100만까지 채널 이동을 반복한다.
- 원하는 번호의 최대 범위 위로 이동할 수도 있기 때문에 100만까지 범위를 설정
- 반복 이동중인 채널 번호가 고장난 버튼때문에 이동할 수 없는 지 확인
- 문자열로 변환 후 비교
- 이동할 수 있다면
숫자버튼개수
++ 나 - 버튼 횟수
와 현재 최소값을 비교하여 최소값 업데이트
출처 : 코드플러스 - 알고리즘 기초 2/2 강의
https://code.plus/course/42