문제
알고리즘
- 반복문을 통해 이동해야 하는 채널로 가기 위한 방법을 확인한다.
- 반복문을 통해 채널로 이동하기 위해 눌러야 하는 번호가 고장이 났는지 확인하고 고장이 났다면 그 번호를 눌러서는 이동할 수 없다.
- 채널로 이동 가능하다면 원래 cnt, 채널을 누른 개수와 +/- 를 누른 개수를 더한 값을 비교하여 cnt에 담는다.
- 마지막 cnt 값이 채널로 가기 위한 최소 개수가 된다.
코드
import sys
n = int(sys.stdin.readline())
m = int(sys.stdin.readline())
broken = list(map(str, sys.stdin.readline().split()))
cnt = abs(100 - n) # 리모컨을 눌러야하는 최대 개수
# 반복문을 통해 이동해야하는 채널로 가기 위한 방법을 확인
for i in range(1000001):
# 반복문을 통해 채널로 이동하기 위해 눌러야 하는 번호가 고장이 났는지 확인
for j in str(i):
if j in broken:
break
# 채널로 이동 가능하다면 원래 cnt와 채널을 누른 개수와 +/- 를 누른 개수를 cnt에 담는다.
else:
cnt = min(cnt, len(str(i)) + abs(i - n))
print(cnt)
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 2565번(파이썬): 전깃줄 (0) | 2022.06.05 |
---|---|
[baekjoon] 백준 11048번(파이썬): 이동하기 (0) | 2022.06.02 |
[baekjoon] 백준 16179번(파이썬): ZOAC (0) | 2022.05.20 |
[baekjoon] 백준 19583번(파이썬): 싸이버개강총회 (0) | 2022.05.19 |
[baekjoon] 백준 3107번(파이썬): IPv6 (0) | 2022.05.18 |