[๋ฐฑ์ค€-1107] ๋ฆฌ๋ชจ์ปจ / Python

๐Ÿ“š Problem Solving/Baekjoon

 

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

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

www.acmicpc.net

import sys

input = sys.stdin.readline
enable = {str(i) for i in range(10)}
n = int(input())
m = int(input())
if m != 0:
    enable -= set(map(str, input().split()))

answer = abs(100 - n)

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

print(answer)

 

ํ•ด์„ค

๋ถ€๋ฅดํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ๋‹ค.

+๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์ ๊ณผ, -๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ตœ์ ์„ ๊ณ ๋ คํ•ด ํƒ์ƒ‰ ๋ฒ”์œ„๋Š” 1000000์œผ๋กœ ์žก์•„์ค€๋‹ค.

enable์—๋Š” ๋ง๊ฐ€์ง„ ๋ฒ„ํŠผ์„ ์ œ์™ธํ•œ ๋ฒ„ํŠผ๋“ค์ด ๋“ค์–ด์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋‹ค.

์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ์˜ ์กฐํ•ฉ ์ค‘์—์„œ

min(answer, abs(- int(num)) + len(num))

์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜๊ฐ€ ๋‹ต์ด๋‹ค.