본문 바로가기
BOJ

[python]백준 1107번 - 리모컨

by yujinkimkim 2023. 8. 18.

1107번: 리모컨 (acmicpc.net)

 

1107번: 리모컨

첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼이

www.acmicpc.net

import sys
input = sys.stdin.readline

n = int(input())
m = int(input())
arr = list(map(int, input().split()))

ans = abs(100 - n)

for num in range(1000001):
    num = str(num)
    for j in range(len(num)):
        if int(num[j]) in arr:
            break
        elif j == len(num) - 1:
            ans = min(ans, abs(int(num) - n) + len(num))

print(ans)

[백준] 1107번 리모컨 - 파이썬(Python) — 조무래기 코딩 (tistory.com)


구글링 했습니당..제 첫 접근은

import bisect
import sys
from collections import deque
input = sys.stdin.readline

n = input().rstrip()
a = [int(i) for i in n]
m = int(input())
arr = deque([0,1,2,3,4,5,6,7,8,9])

marr = list(map(int, input().split()))
for i in marr:
    arr.remove(i)

tmp = []
num = 0
for idx, i in enumerate(a):
    if not i in arr:
        arr.append(i)
        arr = sorted(arr)
        num = arr[arr.index(i)-1]
        print(num)
        arr.remove(i)
        tmp.append(num)
    else:
        tmp.append(i)

print(tmp)
ans = len(a)
tmp = ''.join(map(str,tmp))
ans += abs(int(n) - int(tmp))
print(ans)

근데 이렇게 하면 생각해보니까 위에서 더 큰 수가 더 가까울 수도 있는건데

이렇게 하면 너무 if문 투성이되고 말고도 너무 부족한 점이 많아서 구글링햇습니다

설명은 위에 블로그 들어가면 선생님께서 깔끔하게 해주셨습니다

댓글