문제출처
https://www.acmicpc.net/problem/1107
문제를 스스로 해결하였는가? -> X
입력조건을 확인하지 못한게 실패의 원인인 것 같다. 모든 문제든 입력조건만 제대로 확인하면 어떤 알고리즘을 쓸 수 있을지 어느정도 감이 온다는데, 나는 아직 습관이 안배여있어서 매번 체크하는걸 깜빡한다. 무튼 모든 경우의 수를 다 따져도 괜찮은 문제라는걸 알게되면 쉽게 풀 수 있는 문제다.
사용된 알고리즘
- 브루트포스
주의할 점
- 입력조건이 0 ≤ N ≤ 500,000라서 완전탐색해도 시간제한에 걸리지 않는다.
- 주어진 N의 최댓값이 500,000이라도 그 보다 큰 값에서 채널을 이동하는 경우도 따져야한다. 따라서 1,000,000까지 탐색해야한다.
전체코드
dest = int(input())
m = int(input())
if m != 0: broken = input().split(' ')
else: broken = []
min_move = abs(dest - 100)
for nums in range(1000001):
flag = True
for num in str(nums):
if num in broken: flag = False
if flag:
move = len(str(nums)) + abs(dest - nums)
min_move = min(min_move, move)
print(min_move)
'알고리즘 (Python) > 백준' 카테고리의 다른 글
[백준 11055번][실버2] 가장 큰 증가 부분 수열 (파이썬) (0) | 2022.08.17 |
---|---|
[백준 11053번][실버2] 가장 긴 증가하는 부분 수열 (파이썬) (0) | 2022.08.17 |
[백준 14501번][실버3] 퇴사 (파이썬) (0) | 2022.08.16 |
[백준 1011번][골드5] Fly me to the Alpha Centauri (파이썬) (0) | 2022.08.15 |
[백준 12865번][골드5] 평범한 배낭 (파이썬) (0) | 2022.08.15 |
댓글