https://www.acmicpc.net/problem/1107
๋ฌธ์
์๋น์ด๋ TV๋ฅผ ๋ณด๊ณ ์๋ค. ์๋น์ด๋ ์ฑ๋์ ๋๋ฆฌ๋ ค๊ณ ํ์ง๋ง, ๋ฒํผ์ ๋๋ฌด ์ธ๊ฒ ๋๋ฅด๋ ๋ฐ๋์, ์ผ๋ถ ์ซ์ ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๋ค.
๋ฆฌ๋ชจ์ปจ์๋ ๋ฒํผ์ด 0๋ถํฐ 9๊น์ง ์ซ์, +์ -๊ฐ ์๋ค. +๋ฅผ ๋๋ฅด๋ฉด ํ์ฌ ๋ณด๊ณ ์๋ ์ฑ๋์์ +1๋ ์ฑ๋๋ก ์ด๋ํ๊ณ , -๋ฅผ ๋๋ฅด๋ฉด -1๋ ์ฑ๋๋ก ์ด๋ํ๋ค. ์ฑ๋ 0์์ -๋ฅผ ๋๋ฅธ ๊ฒฝ์ฐ์๋ ์ฑ๋์ด ๋ณํ์ง ์๊ณ , ์ฑ๋์ ๋ฌดํ๋ ๋งํผ ์๋ค.
์๋น์ด๊ฐ ์ง๊ธ ์ด๋ํ๋ ค๊ณ ํ๋ ์ฑ๋์ N์ด๋ค. ์ด๋ค ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๋์ง ์ฃผ์ด์ก์ ๋, ์ฑ๋ N์ผ๋ก ์ด๋ํ๊ธฐ ์ํด์ ๋ฒํผ์ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผํ๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋น์ด๊ฐ ์ง๊ธ ๋ณด๊ณ ์๋ ์ฑ๋์ 100๋ฒ์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์๋น์ด๊ฐ ์ด๋ํ๋ ค๊ณ ํ๋ ์ฑ๋ N (0 โค N โค 500,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๊ณ ์ฅ๋ ๋ฒํผ์ ๊ฐ์ M (0 โค M โค 10)์ด ์ฃผ์ด์ง๋ค. ๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ ์งธ ์ค์๋ ๊ณ ์ฅ๋ ๋ฒํผ์ด ์ฃผ์ด์ง๋ฉฐ, ๊ฐ์ ๋ฒํผ์ด ์ฌ๋ฌ ๋ฒ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฑ๋ N์ผ๋ก ์ด๋ํ๊ธฐ ์ํด ๋ฒํผ์ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผ ํ๋์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์์
์กฐ๊ฑด
- ์๊ฐ ์ ํ: 2์ด
- ๋ฉ๋ชจ๋ฆฌ ์ ํ: 256MB
์ฝ๋
from itertools import product
import sys
input = sys.stdin.readline
# ์
๋ ฅ
go_num = input().rstrip()
out_cnt = int(input())
# ๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ (=10๊ฐ ๋ชจ๋ ๋์)
if out_cnt == 0:
result = min(len(go_num), abs(int(go_num) - 100))
print(result)
exit(0)
# ๋ชจ๋ ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ์ ๊ฒฝ์ฐ
elif out_cnt == 10:
a = set(input().rstrip().split())
print(abs(int(go_num) - 100))
exit(0)
out_lst = set(input().rstrip().split())
lst = set(str(i) for i in range(10))
lst -= out_lst # ์ฐจ์งํฉ์ ์ด์ฉํ์ฌ ์ฌ์ฉ๊ฐ๋ฅํ ๋ฒํผ์ ํ์
ํจ
up_down = abs(int(go_num) - 100) # ์ด๊ธฐ ์ฑ๋์ธ 100๋ฒ์์ +- ์ด๋ํ๋ ๊ฒฝ์ฐ
minNum = sys.maxsize
for a in range(-1,2): # ์ค๋ณต์์ด์ ์์ ๊ฐ์ง์๋ฅผ 3๊ฐ์ง ๊ฒฝ์ฐ๋ก ํ์
ํจ
if a == -1:
if '0' in lst or len(go_num) == 1:
continue
for i in product(lst,repeat=len(go_num)+a):
num = ''
for j in i:
num += j
diff = abs(int(go_num) - int(num)) # ๊ฐ๊ณ ์ ํ๋ ์ฑ๋๊ณผ์ ์ฐจ์ด
click = len(str(int(num))) # ๋ฒํผ์ ๋๋ฅธ ํ์
diff += click
if minNum > diff:
minNum = diff
# ์ถ๋ ฅ
result = min(minNum, up_down)
print(result)
out_cnt
๊ฐ0
์ผ ๊ฒฝ์ฐ์10
์ผ ๊ฒฝ์ฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ณ ๋ คํ๋ค.
๋ชจ๋ ๋์ํ๋ ๊ฒฝ์ฐ๋ผ๋, ๋ฒํผ์ ์ง์ ๋๋ฌ์ ๊ฐ๋ ๊ฒ๋ณด๋ค ์ด๊ธฐ ์ฑ๋ 100
๋ฒ์์ +,-
๋ก ์ด๋ํ๋ ๊ฒ์ด ๋น ๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
Ex) ์ฑ๋ 101
์ผ๋ก ๊ฐ๊ณ ์ํ๋ค๋ฉด, +
๋ก 1๋ฒ์ด๋ฉด ๊ฐ๋ฅํ์ง๋ง, 101
์ ์ง์ ๋๋ฅธ๋ค๋ฉด 3๋ฒ์ ๋์์ด ํ์ํ๋ค.
๋ชจ๋ ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๋ค๋ฉด, +,-
๋ก ์ด๋ํ๋ ๋ฐฉ๋ฒ ๋ฐ์๋ ์กด์ฌํ์ง ์๋๋ค.
- ์ฐจ์งํฉ์ ์ฌ์ฉํ์ฌ
lst
์ ์ฌ์ฉ๊ฐ๋ฅํ ๋ฒํผ๋ง ๋จ๊ฒจ์ค๋ค.
- ์ด๊ธฐ ์ฑ๋
100
๋ฒ์์+,-
์ผ๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ์ธup_down
๋ณ์๋ฅผ ๋ง๋ ๋ค.
go_num
์ ๊ธธ์ด์-1,0,+1
ํ ์ค๋ณต์์ด๋ ๊ณ ๋ คํด์ค๋ค.
0
๋ฒ ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๊ณ , ๊ฐ๊ณ ์ํ๋ ์ฑ๋์ ์ซ์๊ฐ ํ์๋ฆฌ ์๊ฐ ์๋๋ผ๋ฉด, -1
์ ๊ฒฝ์ฐ๋ ๊ณ ๋ คํ๋ค.
0
๋ฒ ๋ฒํผ์ ์ฌ์ฉํ ์ ์๋ค๋ฉด, ๊ตณ์ด ๊ณ ๋ คํด์ฃผ์ง ์์๋ ์๋์ ์ผ๋ก ์ฌ๋ฌ ์๋ฆฌ์๋ฅผ ํ์
ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
go_num
์ด 1555
์ด๊ณ , ์ฌ์ฉํ ์ ์๋ ๋ฒํผ์ด 2,8
๋ฟ์ด๋ผ๊ณ ๊ฐ์ ํด๋ณด์.
๋ง์ฝ go_num
์ ๊ธธ์ด์ธ 4๋ก๋ง ์ค๋ณต์์ด์ ๋ง๋ ๋ค๋ฉด, ๊ทผ์ฌ์น๋ 2222
๊ฐ ๋์ abs(1555-2222)
+ len(num)
์ผ๋ก 671์ด๋ผ๋ ๋ต์ด ๋์ฌ ๊ฒ์ด๋ค.
ํ์ง๋ง go_num
์ ๊ธธ์ด๋ณด๋ค ํ๋ ์์ 3์ผ๋ก ์ค๋ณต์์ด์ ๋ง๋ ๋ค๋ฉด, ๊ทผ์ฌ์น๋ 888
์ด ๋์ abs(1555-888)
+ len(num)
์ผ๋ก 670์ด๋ผ๋ ๋ต์ด ๋์ค๊ฒ ๋๋ค.
๋์ผํ ์ด์ ๋ก go_num
์ ๊ธธ์ด๋ณด๋ค ํ๋ ํฐ ์ซ์๋ก๋ ์ค๋ณต์์ด์ ๋ง๋ค์ด ํ์
ํด์ค๋ค.
- ์ด๋ฌํ ๊ณผ์ ์ ๊ฑฐ์ณ์ ๋์จ
diff
๊ฐ์ ๋ฒํผ์ ๋๋ฅธ ํ์์ธclick
์ ๋ํด ์ต์ข ์ ์ผ๋กminNum
์ ์์๋ธ๋ค.
- ๋ง์ง๋ง์ผ๋ก ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋
up_down
๋ณ์์ ๋น๊ต๋ฅผ ํ ํ์ ๋ ์์ ๊ฐ์ ์ถ๋ ฅํด์ค๋ค.
๋๋ ์ & ๋ฐฐ์ด ์
์๊ฐ๋ณด๋ค ๊ณ ๋ คํด์ผํ ์ ๋ค์ด ๋๋ฌด ๋ง์์ ๊ฝค๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ธ๋ ๋ฌธ์ ์ด๋ค. ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ฌ๋ ค์ค ๋ฐ๋ก๋ค์ด ์์๋ค๋ฉด ํด๊ฒฐํ๊ธฐ๊ฐ ํ๋ค์์ ๊ฒ ๊ฐ๋ค.. ์ด๋ฒ์๋ ๋ฐ๋ก๋ฅผ ๋ค ๋ฃ์ด๋ณด๋ฉฐ ์์ ์ ํ์ง๋ง ๋ง์ฝ ์ค์ ์ด๋ผ๋ฉด ๋ด๊ฐ ์ง์ ํด์ผ ํ ํ ๋ฐ ์ฝ์ง ์์ ๋ฏํ๋ค. ๋ค์๋ถํฐ๋ ๋ฐ๋ก๋ฅผ ์ง์ ์ฐพ์์ ํด๊ฒฐํด๋ณด๋ ์ฐ์ต๋ ํด๋ณด์์ผ๊ฒ ๋ค!
๋ธ๋ฃจํธํฌ์ค ๋ฌธ์ ๋ผ ๊ทธ๋ฐ์ง ์ฃ์ง ์ผ์ด์ค๋ค์ด ์๋นํ ๋ง์๋ค.. ๊ทธ๋๋ ์์ ๋์ ํด๊ฒฐ์ ํ๋ค๋ ์ ์์ ๋ฟ๋ฏํจ์ ๋๋๋ค!