๋ฐฑ์ค (BOJ) 1107
https://www.acmicpc.net/problem/1107
์ฌ์ฉ์ธ์ด : PYTHON
1.๋ฌธ์
2.ํ์ด
2-1. ์๋ํ๋ค๊ฐ ์คํจํ ํ์ด
N : 5457
M : 3
๊ณ ์ฅ๋ ๋ฒํผ : [5,7] ์ด๋ฉด
์
๋ ฅ์ด ๊ฐ๋ฅํ ๋ฒํผ๋ค์ [0,1,2,3,4,5,6,8,9]์ด๋ค.
5457์ ์ฒซ ๋ฒ์งธ ์ซ์ 5๊ฐ ์์ผ๋ฏ๋ก ์ฒซ ๋ฒ์งธ ์ซ์๋ฅผ 4 ํน์ 6์ ์ ๋ ฅํ๋ ๊ฒ์ด ์ต์๋ก ์ด๋ํ ์ ์๋ ์๊ฐ ๋ ๊ฒ์ด๋ค.
์ด ๋ 4๋ฅผ ์ ๋ ฅํ ๊ฒฝ์ฐ๋ ๋ค์ ์ซ์๋ฅผ ์ต๋ํ ํฐ ์๋ก ์ ๋ ฅํด์ผ ํ๊ณ , 6์ ์ ๋ ฅํ ๊ฒฝ์ฐ๋ ์ต๋ํ ์์์๋ฅผ ์ ๋ ฅํด์ผ ํ๋ค๊ณ ์๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ํ๊ณ ์ ํ๋ค.
2-2. ์ฌ๋ฐ๋ฅธ ํ์ด
๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
0 ~ 999899+1 ๊น์ง ๋ฆฌ๋ชจ์ปจ์ผ๋ก ์ ๋ ฅํ ์ ์๋ ๋ชจ๋ ์ซ์๋ค์ ๋น๊ตํ๋ฉฐ ์ต์๊ฐ์ ์ฐพ๋๋ค.
N์ ๋ฒ์๋ 500000๊น์ง ์ด์ง๋ง 999899๊น์ง ๋น๊ตํ๋ ์ด์
N=500000, ์ ๋ ฅํ ์ ์๋ ๋ฒํผ์ด [8,9]์ผ๋
100์์ 500000๊น์ง + ๋ฒํผ์ผ๋ก๋ง ์ด๋ํ๋ ํ์ = 499900
999899์์ 500000๊น์ง - ๋ฒํผ์ผ๋ก๋ง ์ด๋ํ๋ ํ์ = 499899
999899์์ -๋ฒํผ์ผ๋ก ์ด๋ํ๋ ํ์๊ฐ ์ ๋ต์ด ๋๋ค.
์ฆ ๋ ํฐ ๊ฐ์์ -๋ฒํผ์ผ๋ก ์ด๋ํ๋ ํ์๋ ๊ณ ๋ คํ๊ธฐ ์ํด์ ๋ฒ์๋ฅผ 999899๊น์ง ์ก์๋ค.
3.์ฝ๋
์ด๊ธฐ ์ต์๊ฐ์ 100๊ณผ ๋ชฉํฏ๊ฐ(N)์ +ํน์ -๋ฒํผ์ผ๋ก๋ง ์ด๋ํ๋ ํ์ (abs(100-N))์ผ๋ก ๋๋ค.
0~999899๊น์ง์ ์ซ์ ์ค ๊ณ ์ฅ๋ ๋ฒํผ์ด ํฌํจ๋ ์ซ์๊ฐ ๋์ฌ ๊ฒฝ์ฐ flag๋ณ์๋ฅผ 0์ผ๋ก ๋ฐ๊พธ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋์จ๋ค.
flag๋ณ์๊ฐ 1์ธ๊ฒฝ์ฐ(=์ ๋ ฅํ ์ ์๋ ์ซ์์ธ ๊ฒฝ์ฐ)๋ ์ต์๊ฐ์ ๋น๊ตํ๊ณ ๊ฐฑ์ ํ์ฌ ์ค๋ค.
import sys
import math
input = sys.stdin.readline
N=int(input())
M=int(input())
if M>0:
err_btn=list(map(int,input().split()))
else:
err_btn=[]
min_input=abs(100-N)
for num in range(999900):
flag=1
num = str(num)
for i in num:
if int(i) in err_btn:
flag=0
break
if flag==1:
min_input=min(min_input,abs(int(num)-N)+len(num))
print(min_input)
'๐์ฝ๋ฉํ ์คํธ:CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swea 1244-ํ์ด์ฌ][S/W ๋ฌธ์ ํด๊ฒฐ ์์ฉ] 2์ผ์ฐจ - ์ต๋ ์๊ธ (0) | 2023.06.21 |
---|---|
[๋ฐฑ์ค 14500๋ฒ-ํ์ด์ฌ]ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2023.06.20 |
[๋ฐฑ์ค 11053๋ฒ-ํ์ด์ฌ]๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด (0) | 2023.06.20 |
[๋ฐฑ์ค 11052๋ฒ-ํ์ด์ฌ]์นด๋ ๊ตฌ๋งคํ๊ธฐ (0) | 2023.06.20 |
[๋ฐฑ์ค 1463๋ฒ-ํ์ด์ฌ]1๋ก ๋ง๋ค๊ธฐ (0) | 2023.06.20 |