728x90
Problem)
https://www.acmicpc.net/problem/1107
1107번: 리모컨
첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼
www.acmicpc.net
Solution)
숫자버튼을 먼저 누른 다음, +/- 버튼을 눌러 채널을 이동하는 방식으로 접근한다.
이때, 어떤 채널로 이동해야 하는지 알 수 없기 때문에 브루드 포스 방식으로 접근해야한다.
- 이동할 채널 C를 정한다.
- 고장난 버튼을 파악한다.
- 고장난 버튼이 포함되어 있지 않다면 |C-N|을 계산해 +/- 버튼을 몇번 눌러야 하는지 계산한다.
Answer)
n = int(input())
m = int(input())
broken = [False]*10
if m>0:
a = list(map(int, input().split()))
else:
a = []
for x in a:
broken[x] = True
def possible(c):
if c == 0:
if broken[0]:
return 0
else:
return 1
l = 0
while c >0:
if broken[c%10]:
return 0
l +=1
c //=10
return l
ans = abs(n-100)
for i in range(0, 1000000+1):
c = i
l = possible(c)
if l>0:
press = abs(c-n)
if ans > press + l:
ans = press + l
print(ans)
728x90
'코딩테스트' 카테고리의 다른 글
다이나믹 프로그래밍 - 백준 1463 [Python] (0) | 2021.08.03 |
---|---|
브루트 포스 - 백준 15650 [Python] (0) | 2021.07.29 |
브루드 포스 - 백준 1476 [Python] (0) | 2021.07.28 |
브루트 포스 - 백준 2309 [Python] (0) | 2021.07.26 |
골드바흐의 추측 - 백준 6588 [Python] (0) | 2021.07.16 |
댓글