https://www.acmicpc.net/problem/1107
์์ด๋์ด
1. ์๊ณ ๋ฆฌ์ฆ ์ ํ
- ์ฒ์ ๋ฌธ์ ๋ฅผ ๋ณด๊ณ DP๋ก ํ์ด์ผ ํ๋ ์๊ฐํ๋ฉด์ ๋์ ํ ๋ชจ๋ฅด๊ฒ ์ด์ ์๊ณ ๋ฆฌ์ฆ ๋ถ๋ฅ๋ฅผ ๋ณด๋๊น ๊ทธ๋ฅ ๋ธ๋ฃจํธ ํฌ์ค ๋ฌธ์ ๋ค.
2. ๊ตฌํ
- ๋จผ์ ํ์ฌ ์ฑ๋(100)์์ ์ต์๊ฐ์ด ๋์ฌ ์ ์๋์ง ํ์ธ
- ์ดํ 0๋ถํฐ 1000000๊น์ง ๋ฒํผ์ผ๋ก ๋ง๋ค ์ ์๋ ์ฑ๋์ธ์ง ํ์ธ
- ๊ทธ ์ฑ๋ ์ซ์๋ฅผ ๋ง๋๋๋ฐ ํ์ํ ๋ฒํผ ๊ฐ์ ํ์ธ
์ฝ๋ ์ค๋ช
N = int(input())
M = int(input())
if M != 0:
broken_button = [int(x) for x in input().split()]
else:
broken_button = []
result = abs(100 - N)
์ ๋ ฅํ ๋ ๊ณ ์ฅ ๋ ๋ฒํผ์ด ์์ผ๋ฉด ์ ๋ ฅ์ด ์์ผ๋๊น ์ฒ๋ฆฌํด๋ .
์ฒ์ ์ฑ๋ 100์์ +, - ์ฑ๋ ์ด๋ํ ๊ฒ์ด ๋ต์ผ ์๋ ์์ผ๋ฏ๋ก result๊ฐ abs(100 - N)์ผ๋ก ์ค์
for num in range(1000001):
n = [int(x) for x in list(str(num))]
for i in range(len(n)):
if n[i] in broken_button:
break
if i == len(n) - 1:
count = len(n) + abs(N - num)
result = min(result, count)
print(result)
0๋ถํฐ 1000001๊น์ง for๋ฌธ ์คํ.
N ์ต๋๊ฐ์ 500000์ด์ง๋ง ์ซ์๊ฐ ์์์ ๋ด๋ ค์ค๋ ๊ฒฝ์ฐ๋ ์์ผ๋ฏ๋ก 1000000๊น์ง ๋ฐ๋ณต
์๋ฅผ ๋ค์ด N = 500000์ด๊ณ ๊ณ ์ฅ ๋ ๋ฒํผ์ด 1 2 3 4 5 6 7 9 0 ์ผ ๋ 888888์์ ๋ด๋ ค์ค๋ ๊ฒ ๋ ๋น ๋ฅด๋ค.
ํด๋น๋๋ ์ซ์๊ฐ ๋ง๋๋๊ฒ ๊ฐ๋ฅํ๋ฉด result๊ฐ์ ์ ๋ฐ์ดํธํด์ฃผ๊ณ ์๋๋ฉด ๋ค์ ์๋ก ๋๊ธด๋ค.
๋ฒํผ ๋๋ฅธ ํ์๋ ์ซ์๊ธธ์ด + ํด๋น ์ซ์์ N์ ์ฐจ์ด
์ ์ฒด ์ฝ๋
N = int(input())
M = int(input())
if M != 0:
broken_button = [int(x) for x in input().split()]
else:
broken_button = []
result = abs(100 - N)
for num in range(1000001):
n = [int(x) for x in list(str(num))]
for i in range(len(n)):
if n[i] in broken_button:
break
if i == len(n) - 1:
count = len(n) + abs(N - num)
result = min(result, count)
print(result)
๋ธ๋ฃจํธํฌ์ค์๋ ์นํด์ ธ์ผ๊ฒ ๋ค๊ณ ์๊ฐํ ๋ฌธ์
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14500 ํ ํธ๋ก๋ฏธ๋ ธ (python ํ์ด์ฌ) (0) | 2022.06.23 |
---|---|
[๋ฐฑ์ค] 18111 ๋ง์ธํฌ๋ํํธ (python ํ์ด์ฌ) (4) | 2022.06.23 |
[๋ฐฑ์ค] 16234 ์ธ๊ตฌ์ด๋ (python ํ์ด์ฌ) (0) | 2022.06.21 |
[๋ฐฑ์ค] 1389 ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น (python ํ์ด์ฌ) (0) | 2022.06.19 |
[๋ฐฑ์ค] 7562 ๋์ดํธ์ ์ด๋ (python ํ์ด์ฌ) (0) | 2022.06.18 |