๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ๋ฐฑ์ค€ 1107 & 1463 ๋ณธ๋ฌธ

# 1107 ๋ฆฌ๋ชจ์ฝ˜

import sys

input = sys.stdin.readline
target = int(input())
n = int(input())
broken = list(map(int, input().split()))

# ํ˜„์žฌ ์ฑ„๋„์—์„œ + ํ˜น์€ -๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ
min_count = abs(100 - target)

for nums in range(1000001):
    nums = str(nums)

    for j in range(len(nums)):
        # ๊ฐ ์ˆซ์ž๊ฐ€ ๊ณ ์žฅ๋‚ฌ๋Š”์ง€ ํ™•์ธ ํ›„, ๊ณ ์žฅ ๋‚ฌ์œผ๋ฉด break
        if int(nums[j]) in broken:
            break

        # ๊ณ ์žฅ๋‚œ ์ˆซ์ž ์—†์ด ๋งˆ์ง€๋ง‰ ์ž๋ฆฌ๊นŒ์ง€ ์™”๋‹ค๋ฉด min_count ๋น„๊ต ํ›„ ์—…๋ฐ์ดํŠธ
        elif j == len(nums) - 1:
            min_count = min(min_count, abs(int(nums) - target) + len(nums))

print(min_count)

 

 

# 1463 1๋กœ ๋งŒ๋“ค๊ธฐ
# Bottom-up ๋ฐฉ์‹

n = int(input())
d = [0]*(n+1)
d[1] = 0
for i in range(2, n+1):
    d[i] = d[i-1] + 1
    if i%2 == 0 and d[i] > d[i//2] + 1:
        d[i] = d[i//2] + 1
    if i%3 == 0 and d[i] > d[i//3] + 1:
        d[i] = d[i//3] + 1
print(d[n])