728x90
#1107 리모컨 https://www.acmicpc.net/problem/1107
1107번: 리모컨
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼
www.acmicpc.net
이것도 쓸데없는 고민을 참 많이했다.
난 좀 단순하게 생각해볼 필요가 있을 듯 하다.
simple is best!!
target = int(input())
n = int(input())
broken = []
if n > 0:
broken = input().split()
answer = abs(target-100)
for num in range(1000001):
for n in str(num):
if n in broken:
break
else:
answer = min(answer, len(str(num)) + abs(target-num))
print(answer)
내가 의문을 품었던 부분은 딱 하나다.
왜 백만까지 순회해야하는가?
답은
입력값은 50만이 최대이지만 채널은 무한대까지 존재할 수 있다.
쉽게 말하면, 500000번 채널에 도달하기 위해서 600000번 채널을 거쳐갈 수 있다.
이해가 됐는가?
그래서 최대 도달값은 백만이 되어야한다.
만약 0~8까지의 수를 사용할 수 없을 때에 50만에 도달해야한다면 999999번 채널을 거쳐서 갈 수도 있다. (물론 다른 채널을 거치는게 더 빠르다.)
단순한 사고를 추구하자.
'Algorithm > acmicpc.net' 카테고리의 다른 글
브루트포스 : 때론 조건을 (0) | 2022.01.04 |
---|---|
브루트포스 : 이제 좀 깊이가 생기는 (0) | 2022.01.03 |
브루트 포스 시작 (0) | 2022.01.02 |
dp 기초 마지막? (0) | 2022.01.02 |
죽이고싶은 dp.... 아니 리스트... 아니 나... (0) | 2021.12.28 |