본문 바로가기
문제 풀이/백준(BOJ)

[Python] 백준 1107번 : 리모컨

by 희조당 2022. 7. 30.
728x90

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

 

1107번: 리모컨

첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다.  둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼

www.acmicpc.net


💡 문제 풀이

브루트 포스 문제이다. 모든 경우를 따져주면 된다.

 

백만까지 범위의 모든 숫자를 따져서 가장 낮은 값을 찾아주면 된다.

주어진 범위는 50만까지인데 더 따지는 이유는 500,000 채널을 가려고 하는데

1, 2, 3, 4, 5가 고장 났을 경우 100에서 499,900번을 누르는 게 정답이 아니라

600,000에서 100,000번을 - 누르는게 정답인 경우가 있기 때문이다.

✔️ 느낀 점

생각보다 헛고생한 문제이다. 온전히 나 스스로 풀지 못했다. 특이한 문법이 있어서 한번 생각해봐야겠다.

💻 코드

import sys
input = sys.stdin.readline

n = int(input())
m = int(input())
broken = set(input().split()) if m else set()
ans = abs(100 - n)

for num in range(1000001):
    for x in str(num):
        if x in broken: break
    else:
        ans = min(ans, len(str(num)) + abs(num-n))

print(ans)

댓글