https://www.acmicpc.net/problem/1107
풀이
방향키로만 목표값인 n에 가는것을 초깃값으로 잡아준 뒤 0~1000000까지의 숫자 중 만들 수 있는 숫자들을 완전탐색하여 최솟값이 나올 수 있게 계속 비교해준다. 0<= n <= 5000000 까지의 범위를 갖기에 최악의 경우를 대비해서 1000000까지의 숫자를 완전탐색한다.
# 1107번 리모컨
# 최소버튼 수 구하기. 숫자버튼으로 근삿값까지 도달
from collections import deque
import sys
input = sys.stdin.readline
def check(n, numbers):
# 방향키로만 채널을 맞추는 경우
least_cnt = abs(n - 100)
# n의 근삿값을 찾기위해 완전탐색
for i in range(1000000):
for j in range(len(str(i))):
if str(i)[j] not in numbers:
break
# i를 완전히 만들 수 있다면 비교해본다.
elif j == len(str(i)) - 1:
least_cnt = min(least_cnt, abs(n-i) + len(str(i)))
print(least_cnt)
def solve():
n = int(input())
t = int(input())
numbers = {str(i) for i in range(10)}
# 리모컨 완성
if t != 0:
numbers -= set(map(str, input().split()))
check(n, numbers)
solve()
출력결과
'백준 > 완전 탐색' 카테고리의 다른 글
[백준][PyPy3] 2246번 콘도 선정 - 코팩 (0) | 2022.09.15 |
---|---|
[백준] 1018번 체스판 다시 칠하기 - 파이썬 (0) | 2022.08.22 |
[백준][Python] 6603 로또 - 코팩 (0) | 2022.02.09 |
[백준] 1929번 소수 구하기 - 파이썬 (0) | 2022.02.07 |
[백준] 10819번 차이를 최대로 - 파이썬 (0) | 2022.02.07 |