Koala - 10기/코딩테스트 준비 스터디

[백준/python] 1107 리모컨

kjyook 2023. 3. 11. 22:27

 

풀이

 이동하고자 하는 채널은 500,000번 까지 이지만 윗 채널에서 밑 채널로 이동할 수도 있기 때문에 1,000,000 번 채널까지 탐색을 해주어야 한다. 목표 채널로의 이동은 번호를 눌러서 이동한 채널 -> + or - 키를 사용하여 원하는 채널로의 이동이기 때문에 (번호를 눌러 이동한 채널의 자리수) + (목표 채널과 이동한 채널의 차이) 가 눌러야 하는 버튼의 수이고 이를 완전탐색을 하여 눌러야 하는 횟수를 구한다.

코드

import sys

def main():
    N = int(sys.stdin.readline())
    M = map(int, sys.stdin.readline())

    A = list(map(int, sys.stdin.readline().split()))

    count = abs(100 - N)

    for i in range(1000001):
        number = str(i)
        for j in range(len(number)):
            if int(number[j]) in A:
                break
            elif j == len(number) -1:
                count = min(count, abs(i - N) + len(number))

    print(count)



if __name__ == "__main__":
    main()

 

https://www.acmicpc.net/problem/1107