- brute force로 해결
- 0부터 1000000까지 순회하며 모든 경우를 확인함
- (채널은 무한대만큼 있기 때문에, 500000이하만 순회할 경우, 고장난 버튼이 [3, 4]일 때 N이 510000일 경우 최솟값은 6인데 10000로 출력됨)
- 초기 최솟값을 abs(N-100)으로 세팅함
- 그 후 0부터 1000000까지 순회하며 고장난 버튼이 없는 경우에 최솟값을 갱신해줌
import sys
N = int(input()); M = int(input())
err = []
if M != 0:
err = list(sys.stdin.readline()[:-1].split(' '))
result = abs(N - 100)
for i in range(1000001):
i_str = str(i)
for j in range(len(i_str)):
if i_str[j] in err:
break
if j == len(i_str)-1:
result = min(abs(N - i) + len(i_str), result)
print(result)
- 처음 접근은,
- (N의 자릿수 >= 100과 N의 차이)일 때는 +,-을 누르고
- (N의 자릿수 < 100과 N의 차이)일 때는 격차가 최소가 되게끔 숫자버튼을 누르고, +,-를 누르는
방식으로 생각했는데, 생각을 단순하게 할 필요가 있는듯
- 어차피 0부터 1000000까지 순회해도 시간 복잡도가 1000000 * 7 = 7000000 이하로 나오니까 시간 초과에 안걸림