백준 1107번 리모컨

Hyun·2023년 2월 4일
0

코딩테스트

목록 보기
18/66

https://www.acmicpc.net/problem/1107
실패이유 : 구현실패

def possible(n):                    # 해당 번호로 숫자 버튼을 눌러 이동가능한지 확인
    for digit in list(str(n)):
        if digit in breakdown:
            return False

    return True


wanted = int(input())
if int(input()) == 0:
    breakdown = []
else:
    breakdown = list(input().split())

ans = wanted - 100
if ans < 0:
    ans = -ans

for i in range(1000000):        # 0 ~ 100만의 숫자에 대해 모두 검사
    if possible(i):
        digit_moved_and_pushed = len(str(i)) + abs(i - wanted)
        ans = min(ans, digit_moved_and_pushed)

print(ans)
  • 0 ~ 100만까지 채널 이동을 반복한다.
    • 원하는 번호의 최대 범위 위로 이동할 수도 있기 때문에 100만까지 범위를 설정
  • 반복 이동중인 채널 번호가 고장난 버튼때문에 이동할 수 없는 지 확인
    • 문자열로 변환 후 비교
  • 이동할 수 있다면 숫자버튼개수 + + 나 - 버튼 횟수 와 현재 최소값을 비교하여 최소값 업데이트

출처 : 코드플러스 - 알고리즘 기초 2/2 강의
https://code.plus/course/42

0개의 댓글

관련 채용 정보