반응형

-풀이

#0~9 +1,-1 총 11개. 현재 채널 : 100 채널은 0~500000. 0에서 - 누르면 0 그대로
#이동하려는 채널 N이 주어짐
channel=int(input())
#고장난 번호 개수
broken_count = int(input())
#고장난 번호들 리스트
if broken_count == 0:
  broken_num = []
else:
  broken_num = list(map(int, input().split()))
#최대 이동횟수
max_move = abs(100-channel)
#누를 수 있는 번호는 50만 이상 가능하므로 백만까지 탐색. 큰 수에서 작은 수로 내려오는 경우 생각
for num in range(1000001):
  num = str(num)
  for N in range(len(num)):
    # 해당 숫자가 고장난번호를 누르면 스탑
    if int(num[N]) in broken_num:
      break  
    #다 눌러지면 기존답, 번호를 누른 횟수 + 해당 번호로부터 타겟까지의 차이 최소값 출력
    elif N == len(num)-1:
      max_move = min(max_move, len(num)+abs(int(num)-channel))
print(max_move)

-풀이설명

dp문제같았지만 완전탐색으로 가능했다.

풀이출처:https://velog.io/@jajubal/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EB%B0%B1%EC%A4%80-1107-%EB%A6%AC%EB%AA%A8%EC%BB%A8

+ Recent posts