[백준] 1107번 파이썬

Heejun Kim·2022년 6월 2일
0

Coding Test

목록 보기
27/51

문제: https://www.acmicpc.net/problem/1107

문제 후기

  1. 문제 해결을 위한 기준을 생각하지 못해 결국 구글링을 했다. 참고한 사이트의 내용을 이해하고 풀어보았는데 지난 마인크래프트 문제와 비슷한 것을 이해했다.
  2. 문제에 대한 논리적인 이해화, 코드 구현을 더 연습해야겠다.
import sys
input = sys.stdin.readline

N = int(input())
M = int(input())
not_working = list(input().split())

# 리모콘이 전부 고장나 +, - 로만 조작할 경우 걸리는 횟수
answer = abs(100 - N)

# 모든 채널 경우의 수를 확인, 채널은 무한대이지만 주어진 채널의 최대 숫자는 500,000이다.
# 즉 최대 6자릿수의 숫자 범위를 모두 커버해야 하기 때문에 100만으로 반복문을 설정한다.
for channel in range(1_000_001):
    channel = str(channel)

    # 채널에 포함된 숫자가 작동 안하는지 확인
    for i in range(len(channel)):
        if channel[i] in not_working:
            break
        
        # 채널에 포함와 가장 가까운 숫자(자릿수가 같은)까지 왔다면, 기존 리모콘 조작수와 비교
        elif i == len(channel) - 1:
            answer = min(answer, abs(N - int(channel)) + len(channel))

print(answer)

# 참고 사이트: https://seongonion.tistory.com/99

0개의 댓글