๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 1107๋ฒˆ_๋ฆฌ๋ชจ์ปจ

Dbswnstjd 2023. 4. 21. 12:33

๋ฌธ์ œ

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

 

1107๋ฒˆ: ๋ฆฌ๋ชจ์ปจ

์ฒซ์งธ ์ค„์— ์ˆ˜๋นˆ์ด๊ฐ€ ์ด๋™ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์ฑ„๋„ N (0 ≤ N ≤ 500,000)์ด ์ฃผ์–ด์ง„๋‹ค.  ๋‘˜์งธ ์ค„์—๋Š” ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์˜ ๊ฐœ์ˆ˜ M (0 ≤ M ≤ 10)์ด ์ฃผ์–ด์ง„๋‹ค. ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์…‹์งธ ์ค„์—๋Š” ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 1107๋ฒˆ ๋ฌธ์ œ - ๋ฆฌ๋ชจ์ปจ
import sys
input = sys.stdin.readline
target = int(input())
n = int(input())
broken = list(map(int, input().split()))

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

for nums in range(1000001):
    nums = str(nums)
    
    for i in range(len(nums)):
        if int(nums[i]) in broken:
            break

        elif i == len(nums) - 1:
            cnt = min(cnt, abs(int(nums) - target) + len(nums))

print(cnt)

ํŠน๋ณ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์“ฐ์ผ ๊ฒƒ ๊ฐ™์ง€๋งŒ ์™„์ „ํƒ์ƒ‰์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•  ์ ์€ ๋ฒ”์œ„๋ฅผ 50๋งŒ์œผ๋กœ ์žก์œผ๋ฉด ์•ˆ๋œ๋‹ค. ์ฑ„๋„์ด ๋ฌดํ•œ๋Œ€ ์ด๋ฏ€๋กœ 100๋งŒ์—์„œ ์ค„์–ด๋“œ๋Š” ๊ฒƒ๋„ ์ƒ๊ฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ”์œ„์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.