ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฉ ๋ธ๋ฃจํธํฌ์ค
thinking
์์ ์ง์ง ์ด๊ฑฐ ๊ณ์ ํ๋ ค์ ๊ตฌ๊ธ๋งํด๋ดค๋ค
๋๋ N์ ์ต๋ ๋ฒ์๊ฐ 500,000์ด๋ผ 500000๊น์ง๋ง ์ฒดํนํ๋ฉด ๋๋ค๊ณ ์๊ฐํ๋๋ฐ ๋ค๋ฅธ์ฌ๋๋ค์ ๋ค range๋ฅผ 100๋ง์ผ๋ก ์ก๋๊ฒ ์ง์ง ์ดํด๊ฐ ์๊ฐ๋ค.
50๋ง ์ฑ๋๊น์ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ 50๋ง๋ณด๋ค ํฌ๋ฉด์ ๋ชจ๋ ์ซ์์ ๊ฒฝ์ฐ๋ฅผ ๊ฑฐ์น๋ 100๋ง๊น์ง๋ฅผ ๋ฒ์๋ก ์ก์๋ค๋๋ฐ ๋๋์ฒด ์ด๊ฒ ๋ญ๋ง์ด์ผ ๐
๋ญ๋ง์ด๋๋ฉด ๋ด๊ฐ ์ด๋ํ๊ณ ์ถ์ ์ฑ๋์ด N(0~500,000) ๋ฒ์ด๋ผ๊ณ ํ์ ๋, 0๋ฒ๋ถํฐ ++๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ์ 999,999๋ฒ๋ถํฐ --๋ก ์ด๋ํ๋ ๊ฒฝ์ฐ(๋๋ฅผ ์ ์๋ ๋ฒํผ์ด 9๋ง ์์ผ๋ฉด 9๋ฐ์ ๋ชป๋๋ฅด๊ธฐ ๋๋ฌธ)๋ฅผ ์ ๋ถ ๊ณ ๋ คํ ๊ฒ์ด์๋ค.
๊ฐ๋ฅํ ์ซ์๋ฅผ ํ๋ํ๋ ์ ๋ถ ์ํํ๋ฉด์ ๋๋ฅผ ์ ์๋ ์ซ์์ ํด๋นํ๋ ๊ฒฝ์ฐ๋ง ์กฐ๊ฑด๋ฌธ ์ฒ๋ฆฌ๋ฅผ ํตํด ์ต์ ๊ฐญ์ ๊ณ์ฐํด์คฌ๋ค.
๋ง์ ์ฝ๋ (success)
N = int(input()) # ์ฑ๋๋ฒํธ
M = int(input()) # ๊ณ ์ฅ๋ ๋ฒํผ์ ๊ฐ์
remote = {str(x) for x in range(10)} # ๋ฆฌ๋ชจ์ปจ๋ฒํผ
if M != 0:
remote -= set(input().split()) # ์ฌ์ฉ๊ฐ๋ฅํ ๋ฒํผ ๋ฝ์๋
min_cnt = abs(100-N) # ์ผ๋จ 100๊ณผ์ ๊ฐญ์ ์ต์๋ก ๋๊ณ ๊ณ์ฐ
for k in range(1000000):
num = str(k)
for i in range(len(num)):
if num[i] not in remote: # 0~999999๊น์ง์ ์ซ์ ์ํํ๋ฉด์ ๋ฆฌ๋ชจ์ปจ ๋ฒํผ์ ์์ผ๋ฉด ํจ์ฐ
break
if i == len(num)-1: # ๋ง์ง๋ง ์๋ฆฌ์๊น์ง ํ์ธํ์ผ๋ฉด ์ต์ ์นด์ดํ
๊ฐฑ์
min_cnt = min(min_cnt, abs(N-k)+len(num))
print(min_cnt)
์คํจ ์ฝ๋ (Fail)
๋๋ ์ฒ์์ ์ํ ์ํ๊ณ ํ์๋๋ฐ ๋ด๊ฐ ์๋ชป ์๊ฐํ๊ฑฐ์๋ค.
testcase 3๋ฒ์ ๋ณด๋ฉด, 500000์ผ๋ 1,5๋ฒ๋ง ๋๋ฅผ ์ ์์ด์ '500000' ์ ์ํํ๋ฉฐ ๋๋ฅผ ์ ์๋ ๋ฒํผ์ ๋ฒํผ ๋๋ฅด๋ ํ์์ ๋ํ๊ธฐ 1 ํด์ฃผ๊ณ , 0์ฒ๋ผ ๋๋ฅผ ์ ์๋ ๋ฒํผ์ด๋ฉด ๊ฐ์ฅ ๊ฐญ์ด ์์ 1๋ฒ ๋ฒํผ์ ๋๋ฌ ๊ทธ ์ฐจ์ด๋ฅผ ๊ณ์ฐํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์ฝ๋๋ฅผ ์งฐ๋ค.
๋ฌธ์ ์์ ์ฃผ์ด์ง ํ ์คํธ์ผ์ด์ค์ ๊ฒฝ์ฐ ์ด ์ฝ๋๋ก๋ ๋ชจ๋ ์ ๋ต์ด ๋์ค์ง๋ง, ์๋์ ๊ฐ์ ๊ฒฝ์ฐ์์ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
์๋ฅผ๋ค์ด N=5478์ด๊ณ 6,7,8๋ฒ์ด ๋ชป ๋๋ฅด๋ ๋ฒํผ์ด๋ผ๊ณ ํ์ ๋ 5490์ผ๋๊ฐ ๊ฐ์ฅ ๊ฐญ์ด ์์๋ฐ ์ด ์ฝ๋๋ก ํ๋ฉด 5459 ๋๋ 5499๊ฐ tmp์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๊ทธ๋ผ ์ต์๊ฐญ์ด ์๋๋ค.
range(1000000)์ ์ํํ์ง ์๊ณ ์ด ์ฝ๋๋ฅผ ์ด๋ ค ํ์ด๋ณด๊ณ ์ถ์์ผ๋ ์ 90๊ณผ 78์ ๊ฐญ์ ์ฐพ๊ธฐ ์ํด์๋ ํ๋ํ๋ ๋ค ๋๋ ค๋ณด๋๊ฒ ๋ง๋๊ฑฐ ๊ฐ๋ค
N = input() # ์ฑ๋๋ฒํธ
M = int(input()) # ๊ณ ์ฅ๋ ๋ฒํผ์ ๊ฐ์
remote = {str(x) for x in range(10)} # ๋ฆฌ๋ชจ์ปจ๋ฒํผ
if M != 0:
remote -= set(input().split()) # ์ฌ์ฉ๊ฐ๋ฅํ ๋ฒํผ ๋ฝ์๋
gap100 = abs(100-int(N)) # 100๊ณผ์ ์ฐจ์ด
min_gap = 10 # ์ฌ์ฉ๊ฐ๋ฅํ ๋ฒํผ๊ณผ์ ์ต์ ๊ฐญ ๊ตฌํ ๋ณ์
cnt = 0 # ๋ฒํผ ๋๋ฅด๋ ํ์
tmp = '' # ์ฑ๋๊ฐ์ ์ฐจ์ด ๊ตฌํ ๋ณ์
for s in N:
if s in remote:
tmp += '0'
cnt += 1
else:
for num in remote:
gap = abs(int(num)-int(s))
if gap < min_gap:
min_gap = gap
tmp += str(min_gap)
cnt += 1
res = min(gap100, int(tmp)+cnt)
print(res)
ํ๊ธฐ
์ธ์ ๊ณจ๋ ํ๋ฒ์ ๋ง์๋ณด๋ ~ ๐
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1927. ์ต์ํ / 11279. ์ต๋ํ / python ํ์ด์ฌ (0) | 2021.06.06 |
---|---|
[๋ฐฑ์ค] 10026. ์ ๋ก์์ฝ / python ํ์ด์ฌ (0) | 2021.06.03 |
[๋ฐฑ์ค] 7576. ํ ๋งํ / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 14889. ์คํํธ์ ๋งํฌ / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 5430. AC / python ํ์ด์ฌ (0) | 2021.06.02 |
- 21609 ์์ด ์คํ๊ต
- ์๊ณ ๋ฆฌ์ฆ
- ์ผ์ฑ์ฝํ
- swea
- BFS
- ๋ธ๋ฃจํธํฌ์ค
- merge ์๋ฌ
- Python
- ๊ธฐ์ง๊ตญ์ค์น
- 2018 ์นด์นด์ค ๊ณต์ฑ
- ์ผ์ฑ๊ธฐ์ถ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- dfs
- ๋ฐฑ์ค
- ๋ณด์์ผํ
- git ๋ฏธ๋ฌ๋ง
- react
- merge์๋ฌ
- dp
- ์์ด๋๋ง์๊ธฐ
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ํ์ด์ฌ
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- Total
- Today
- Yesterday