본문 바로가기
알고리즘

[알고리즘] 백준 1107 리모컨

by 주주병 2024. 10. 14.
728x90
반응형

백준 1107 리모컨

 

단순히 100만의 수만 보면 되기 때문에 단순 브루트포스 문제라고 생각했다.
그러나 어떠한 수가 입력됐을 때 무작정 100만의 수만 보면 메모리 낭비라고 생각했다.

📌N이 입력됐을 때 범위를 어떻게 설정해줘야 할까?

기본 채널이 100번으로 설정되어 있기 때문에 임의의 N과의 최댓값은 +만 사용했을 때
N-100이라고 볼 수 있다. 따라서 N의 두 배인 2N이상의 값에서는 앞에서의 최댓값보다 크기 때문에 구할 필요가 없다.

 

 

정답

📌 범위를 N*2+1가 아닌 이유는 0이 입력됐을 때 0~100의 수를 조사할 수 없기 때문에 N*2+101를 썼다.

import sys

n = int(sys.stdin.readline())
num = int(sys.stdin.readline())
if num == 0:
    lists = []
else:
    lists = list(sys.stdin.readline().split())

MIN = abs(100-n)
for i in range(n*2+101):
    if abs(n-i) + len(str(i)) < MIN and all(x not in lists for x in str(i)):
        MIN = abs(n-i) + len(str(i))
        
print(MIN)
728x90
반응형