https://www.acmicpc.net/problem/1107
์ด๋ฑํ๊ต๋ ๋งจ๋ ๋ฌ๋ ฅ์ ์ฐข์ด๋จน๋๋ ์ด๋ฒ์ ๋ฆฌ๋ชจ์ปจ ๋ฒํผ์ด ์ฐข๊ฒผ๋ค.
ํ์ฌ ๊ธฐ์ค ์๋ธ๋ ํฐ์ด ๊ณจ๋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%์์ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฌ๋ค.
์ผ๋ฐํ๋ค..
'๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 2941 ํฌ๋ก์ํฐ์ ์ํ๋ฒณ - ํ์ด์ฌ, ์๋ฐ (0) | 2022.11.26 |
---|---|
๋ฐฑ์ค 1943 ๋์ ๋ถ๋ฐฐ - ํ์ด์ฌ (0) | 2022.11.23 |
๋ฐฑ์ค 9012 ๊ดํธ - ํ์ด์ฌ (0) | 2022.11.20 |
๋ฐฑ์ค 11286 ์ ๋๊ฐ ํ - ํ์ด์ฌ (0) | 2022.11.19 |
๋ฐฑ์ค 24337 ๊ฐํฌ์ ํ - ํ์ด์ฌ (5) | 2022.11.19 |