문제
1107번: 리모컨
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼
www.acmicpc.net
알고리즘
- 반복문을 통해 이동해야 하는 채널로 가기 위한 방법을 확인한다.
- 반복문을 통해 채널로 이동하기 위해 눌러야 하는 번호가 고장이 났는지 확인하고 고장이 났다면 그 번호를 눌러서는 이동할 수 없다.
- 채널로 이동 가능하다면 원래 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
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'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 |