문제 : 1107번
💪🏻 해결 방법
N의 최대 범위가 500,000이라 500,000까지만 탐색하면 된다고 생각했는데 다른 풀이를 참고해보니 range를 1,000,000으로 두고 풀고 있었다.
range를 1,000,000으로 설정한 이유는 0번부터 ++로 이동하는 경우와, 거꾸로 999,999번부터 --로 이동하는 경우를 전부 고려하기 위함이었다. * 9빼고 모든 버튼이 고장났다면 9밖에 누를 수 없음
정답 코드
target = int(input())
ans = abs(100 - target) # + , - 버튼으로 하나하나 이동하는 경우
M = int(input())
if M:
broken = set(input().split())
else:
broken = set()
for num in range(1000001):
for N in str(num):
if N in broken: # 고장난 버튼이면 break
break
else: # 고장나지 않았다면
# min(기존답, 번호를 누른 횟수 + 해당 번호로부터 타겟까지의 차이)
ans = min(ans, len(str(num)) + abs(num - target))
print(ans)
🎁 성공
'알고리즘' 카테고리의 다른 글
[프로그래머스 / Python] K번째 수 (0) | 2023.02.06 |
---|---|
[프로그래머스 / Python] 체육복 (1) | 2023.02.05 |
[BOJ / Python] 앵무새 (1) | 2023.02.01 |
[BOJ / Python] 1484 다이어트 (0) | 2023.01.30 |
[BOJ / Python] 1325 효율적인 해킹 (1) | 2023.01.24 |