๋ฐฑ์ค€

๋ฐฑ์ค€ 1107 ๋ฆฌ๋ชจ์ปจ - ํŒŒ์ด์ฌ

stoneeee 2022. 11. 20. 16:06

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

 

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

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

www.acmicpc.net

 

 

์ดˆ๋“ฑํ•™๊ต๋• ๋งจ๋‚  ๋‹ฌ๋ ฅ์„ ์ฐข์–ด๋จน๋”๋‹ˆ ์ด๋ฒˆ์—” ๋ฆฌ๋ชจ์ปจ ๋ฒ„ํŠผ์ด ์ฐข๊ฒผ๋‹ค.

 

ํ˜„์žฌ ๊ธฐ์ค€ ์†”๋ธŒ๋“œ ํ‹ฐ์–ด ๊ณจ๋“œ5์ธ ๋ฌธ์ œ์ธ๋ฐ, ํ‰๊ท  ์‹œ๋„ ํšŸ์ˆ˜๊ฐ€ 4.43ํšŒ์ด๋‹ค.

์˜ˆ์™ธ ์ƒํ™ฉ์ด ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ๊ณ , ๋‚˜ ์—ญ์‹œ๋„ 4๋ฒˆ์˜ ์‹œ๋„ ๋์— AC๋ฅผ ์–ป์—ˆ๋‹ค.

๋‚˜์˜ ์˜ค๋‹ต ์›์ธ์€ ๊ฐ๊ฐ ๋‹ฌ๋ž๋Š”๋ฐ, 1. 0 ๋ฒ„ํŠผ ์ฒ˜๋ฆฌ, 2. ๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฒ”์œ„, 3. ์˜คํƒ€ ๋ชป์ฐพ์Œ์ด์—ˆ๋‹ค.

๊ฝค ์žฌ๋ฏธ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

9%์—์„œ ์ž๊พธ ์˜ค๋‹ต์ด ๋‚˜์˜ค๋Š” ๋‹น์‹ , 0 ๋ฒ„ํŠผ์ด ๊ณ ์žฅ๋‚ฌ๋Š”๋ฐ ๋ˆ„๋ฅด๊ณ  ์žˆ์ง„ ์•Š์€์ง€, ๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฒ”์œ„๋ฅผ 500001๊นŒ์ง€๋กœ ์„ค์ •ํ–ˆ๋Š” ์ง€ ํ™•์ธํ•ด๋ณด์‹œ๋ฉด ์›ฌ๋งŒํ•˜๋ฉด ๊ฑธ๋ฆด๊ฒ๋‹ˆ๋‹ค.

 

 

 

 

์ผ๋‹จ broken์ด๋ผ๋Š” ๋ฆฌ์ŠคํŠธ์— ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ์„ ๋‹ด์•˜๋‹ค.

๊ณ ์žฅ ์•ˆ ๋‚œ ๋ฆฌ๋ชจ์ปจ์„ ์“ฐ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋‹ˆ ์ด๋ฅผ ๊ณ ๋ คํ•˜์ž. BOJ๊ฐ€ ํ•˜์—ผ์—†์ด input์„ ๊ธฐ๋‹ค๋ฆฌ๋‹ค ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆด๋‹ค.

์ฒซ ๋ฒˆ์งธ๋Š” ์‹œ์ž‘ ์ฑ„๋„(100๋ฒˆ)์—์„œ + ๋‚˜ - ๋ฒ„ํŠผ ๋งŒ์„ ์ด์šฉํ•ด์„œ ๋ชฉํ‘œ ์ฑ„๋„(target)๊นŒ์ง€ ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์ด๊ณ ,

๋‘ ๋ฒˆ์งธ๋Š” ์„ฑํ•œ ๋ฒ„ํŠผ์œผ๋กœ ์ตœ๋Œ€ํ•œ ๊ทผ์ฒ˜ ์ฑ„๋„๊นŒ์ง€ ๊ฐ„ ๋’ค, +๋‚˜ -๋ฒ„ํŠผ์„ ์ด์šฉํ•ด ๋„์ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์„ ๋…ผ๋ฆฌ๋งŒ์œผ๋กœ ํ•ด๊ฒฐํ•˜๊ธด ์–ด๋ ค์›Œ ๋ณด์˜€๋Š”๋ฐ ๋‹คํ–‰ํžˆ ์ฑ„๋„ ๋ฒ”์œ„๊ฐ€ ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ์ˆ˜์ค€์ด๋‹ค.

 

์ผ๋‹จ answer์„ ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ๋’ค, 0๋ฒˆ๋ถ€ํ„ฐ 999999๋ฒˆ๊นŒ์ง€์˜ ์ฑ„๋„์„ ๋ชจ๋‘ ํ™•์ธํ•ด๋ดค๋‹ค.

 

 

target์˜ ๋ฒ”์œ„๊ฐ€ 0 ~ 500000์ธ๋ฐ 999999๊นŒ์ง€ ํ™•์ธํ•˜๋Š” ์ด์œ ๋Š”,

๋‚ด๊ฐ€ 8 ๋ฒ„ํŠผ๋งŒ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ ๋‹ต์ด 500000์ธ ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋œ๋‹ค.

๋ฒ”์œ„๊ฐ€ 500000๊นŒ์ง€๋ผ๋ฉด 88888๋ฅผ ๋ˆ„๋ฅธ ๋’ค +๋ฒ„ํŠผ์„ 411112๋ฒˆ ๋ˆŒ๋Ÿฌ์„œ, ์ด ๋ฒ„ํŠผ์„ 411117๋ฒˆ ๋ˆ„๋ฅด๋ฉด ๋„์ฐฉํ•œ๋‹ค.

ํ•˜์ง€๋งŒ, ๋ฒ”์œ„๊ฐ€ 999999๊นŒ์ง€๋ผ๋ฉด 888888์„ ๋ˆ„๋ฅธ ๋’ค - ๋ฒ„ํŠผ์„ 388888๋ฒˆ ๋ˆŒ๋Ÿฌ์„œ, ์ด ๋ฒ„ํŠผ์„ 388894๋ฒˆ ๋ˆŒ๋Ÿฌ์„œ ๋„์ฐฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฌธ์ œ์—์„œ๋„ target์˜ ๋ฒ”์œ„๋Š” ํ•œ์ •ํ–ˆ์ง€๋งŒ, ์กด์žฌํ•˜๋Š” ์ฑ„๋„์˜ ๋ฒ”์œ„๋Š” ๋ฌด์ œํ•œ์ด๋ผ๋Š” ์กฐ๊ฑด์ด ์žˆ์—ˆ๋‹ค.

์ข…๋ฃŒ๊ฐ’๋„ ์‚ฌ์‹ค 999999๋ณด๋‹ค ์ž‘์•„๋„ ๋ ํ…๋ฐ, ์ผ์ผํžˆ ๋”ฐ์ ธ ์ฃผ๊ธฐ์—” ๊ท€์ฐฎ๊ณ  ๊ทธ๋ƒฅ 999999๊นŒ์ง€๋Š” ๋‹ค ๋ด๋„ ์‹œ๊ฐ„์ƒ ๊ดœ์ฐฎ๋‹ค.

 

 

์•„๋ฌดํŠผ ๊ฐ๊ฐ์˜ ์ˆ˜๋ฅผ ๋‚ด๊ฐ€ ๊ฐ€์ง„ ๋ฆฌ๋ชจ์ปจ ๋ฒ„ํŠผ์œผ๋กœ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ง€ ํ™•์ธํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋‹ค์Œ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ , ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋Š” ํšŸ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด์„œ answer๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๊ฐฑ์‹ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๋‚˜๋Š” ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ๋„ ๋ฆฌ์ŠคํŠธ์•ˆ์— string์œผ๋กœ ๋ฐ›๊ณ , ๊ฐ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•ด๊ฐ€๋ฉด์„œ ํ™•์ธํ–ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์„ ์ถ”์ฒœํ•˜๋Š”๊ฒŒ, ์ฒ˜์Œ์—๋Š” ์ˆ˜๋ฅผ while๋ฌธ์œผ๋กœ 10์”ฉ ๋‚˜๋ˆ ๊ฐ€๋ฉด์„œ ์ฒดํฌํ–ˆ๋”๋‹ˆ 0๋ฒˆ ์ฑ„๋„์ผ ๋•Œ while๋ฌธ ์•ˆ์œผ๋กœ ์•ˆ๋“ค์–ด๊ฐ€์„œ 0๋ฒˆ ๋ฒ„ํŠผ์ด ๊ณ ์žฅ๋‚ฌ๋Š”๋ฐ๋„ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๊ฐ€ ์•ˆ๋˜๋Š” ์ƒํ™ฉ์„ ๋†“์ณค์—ˆ๋‹ค.

์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๋ชป์ƒ๊ฒจ์ง€๊ณ , ๋˜ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋ฅผ ์ƒ๊ฐํ•˜๊ธฐ ์‹ซ์–ด์„œ ๋ฌธ์ž์—ด ๋น„๊ต๋กœ ๊ฐˆ์•„ํƒ”๋‹ค.

 

 

target = int(input())
N = int(input())
broken = [] # ๊ณ ์žฅ๋‚œ ๋ฒ„ํŠผ ์ €์žฅ
if N != 0:
    broken = list(input().split())

answer = abs(target-100) # (+)๋‚˜ (-) ๋ฒ„ํŠผ ๋งŒ์œผ๋กœ ์ด๋™ํ•  ๋•Œ

for i in range(1000000): # 0๋ฒˆ ๋ถ€ํ„ฐ 999999๊นŒ์ง€ ๋ฒ„ํŠผ ๋ˆ„๋ฅผ ์ˆ˜ ์žˆ๋Š” ์ฑ„๋„ ์ฒดํฌ
    num, j = str(i), 0

    while j < len(num):
        if num[j] not in broken:
            j += 1
        else:
            break

    if j == len(num):
        answer = min(answer, len(str(i)) + abs(i-target))

print(answer)

 


 

ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜๋‹ค๊ฐ€ ๋ฌธ๋“ ๊ถ๊ธˆ์ฆ์ด ์ƒ๊ฒจ์„œ ๋ธŒ๋ฃจํŠธํฌ์Šค ๋ฒ”์œ„๋ฅผ ์กฐ์ ˆํ•ด์„œ ์ œ์ถœํ•ด๋ดค๋‹ค.

ํ•˜๋‚˜์˜ ์ฑ„๋„์„ ์ฒดํฌํ•  ๋•Œ ์—ฐ์‚ฐ์ด 10๋ฒˆ์„ ๋„˜์–ด๊ฐ€์ง€ ์•Š์œผ๋‹ˆ๊นŒ ์ด๋ก ์ƒ ๋ฒ”์œ„๋ฅผ 1000๋งŒ๊นŒ์ง€ ํ•ด๋„ ๋˜๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€? ํ•˜๋Š” ์ƒ๊ฐ์— ๊ตณ์ด๊ตณ์ด 100๋งŒ, 200๋งŒ, 1000๋งŒ์œผ๋กœ ๋ฒ”์œ„๋ฅผ ๋„ฃ์–ด์„œ ๋Œ๋ ค๋ดค๋‹ค.

 

 

100๋งŒ(๋‹น์—ฐํžˆ), 200๋งŒ์€ ํ†ต๊ณผ๊ฐ€ ๋๋‹ค.

1000๋งŒ์€ ์ฑ„์ ๋งŒ 13๋ถ„์ด ๊ฑธ๋ ธ๋‹ค. ์•ฝ 50%์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค. 

 

 

์•ผ๋ฐ•ํ•˜๋‹ค..