https://www.acmicpc.net/problem/1107
1107번: 리모컨
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이
www.acmicpc.net
import sys
def can_move(channel, broken):
for ch in str(channel):
if ch in broken:
return False
return True
if __name__ == '__main__':
# 수빈이가 이동하려고 하는 채널 N(0 <= N <= 500,000)
N = int(sys.stdin.readline().strip())
# 고장난 버튼의 개수 M (0 <= M <= 10)
M = int(sys.stdin.readline().strip())
broken = set(sys.stdin.readline().split()) if M > 0 else set()
# +와 -버튼만을 사용하는 경우
min_count = abs(N - 100)
# 모든 채널을 순회하며 누를 수 있는지 검사
# 채널이 무한대로 존재하지만, 실제로 고려해야 할 채널 범위는 제한적임
for channel in range(1000000):
if can_move(channel, broken):
min_count = min(min_count, len(str(channel)) + abs(channel - N))
print(min_count)
'코딩테스트 연습 > 브루트 포스' 카테고리의 다른 글
[브루트 포스] 1476 날짜 계산 (0) | 2024.01.25 |
---|---|
[브루트 포스] 3085 사탕 게임 (1) | 2024.01.25 |
[브루트 포스] 2309 일곱 난쟁이 (0) | 2024.01.25 |