숫자버튼을 누르고, 그 다음 +나 -중 하나만 연속해서 눌러야한다.
이 때, 숫자버튼을 눌러 가야하는 채널을 정해야하는데 이때 브루트포스 방법으로 구현하면 된다.
1. 이동할 채널 C를 정한다.
2. C에 포함되어 있는 숫자 중에 고장난 버튼이 있는지 확인한다.
- 수를 10으로 계속해서 나누면서 하나씩 검사
3. 고장난 버튼이 포함되어 있지 않다면 |C-N|을 계산해 +나 -버튼을 몇 번 눌러야 하는지를 계산한다.
import sys
input = sys.stdin.readline
MAX = 1000000
btn=[False] * 10
ch = int(input())
m = int(input())
a = list(map(int, input().split()))
for x in a:
btn[x] = True
# 이동하려고 하는 채널까지 숫자를 눌러 이동 가능할 때,
# 누르는 버튼의 개수를 반환
def possible(ch):
if ch == 0:
if btn[0]:
return 0
else:
return 1
len = 0
while ch > 0:
if btn[ch%10]:
return 0
len += 1
ch //= 10
return len
# 가장 처음에 보고 있는 채널은 100이기 때문에
# 초기값을 100에서 숫자 버튼을 누르지 않고 이동하는 횟수로 지정
answer = abs(ch - 50)
# 이동 가능한 모든 버튼을 검사
for i in range(100):
len = possible(i)
print(i, len)
# 숫자를 눌러서 갈 수 있는 경우
if len > 0:
press = abs(i-ch) # +나 - 버튼을 몇 번 눌러야 하는지
if answer > len + press:
answer = len + press
print(answer)
'알고리즘 > 브루트포스' 카테고리의 다른 글
[백준/브루트포스] 15649 N과 M (1) (Python, 파이썬) (0) | 2021.05.15 |
---|---|
[백준/브루트포스] 14500 테트로미노(Python, 파이썬) (0) | 2021.05.12 |
[백준/브루트포스] 1476 날짜 계산(Python, 파이썬) (0) | 2021.05.11 |
[백준/브루트포스] 3085 사탕게임(Python, 파이썬) (1) | 2021.05.09 |
[백준/브루트포스] 2309 일곱난쟁이(Python, 파이썬) (0) | 2021.05.09 |