๋ฌธ์
๋ฐฑ์ค ๋ฆฌ๋ชจ์ปจ https://www.acmicpc.net/problem/1107
์ฝ๋
target = int(input())
m = int(input())
if m != 0:
broken = list(map(int, input().split()))
else:
broken = []
count = abs(100 - target)
for num in range(1000000 + 1):
for n in str(num):
if int(n) in broken:
break
else:
count = min(count, len(str(num)) + abs(num - target))
print(count)
ํ์ด
target = int(input())
m = int(input())
if m != 0:
broken = list(map(int, input().split()))
else:
broken = []
์ ๋ ฅ์กฐ๊ฑด์ ๋ง์ถฐ ์ ๋ ฅ์ ๋ฐ๋๋ค.
๋ง์ฝ ๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ค๋ฉด broken ๋ฐฐ์ด์ ๊ณ ์ฅ๋ฒํผ ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ ์ด๊ธฐํํ๋ค.
๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ค๋ฉด broken์ ๋น๋ฐฐ์ด๋ก ์ด๊ธฐํํ๋ค.
count = abs(100 - target)
count ๋ณ์๋ฅผ +๋ฒํผ ๋๋ -๋ฒํผ์ผ๋ก๋ง ์ฑ๋ ์ด๋ํ ๊ฒฝ์ฐ(์ต๋๊ฐ)์ผ๋ก ์ด๊ธฐํํ๋ค.
for num in range(1000000 + 1):
์ด๋ํ ์ ์๋ ๋ชจ๋ ์ฑ๋์ ๊ณ ๋ คํ๋ค.
์ ๋ ฅ ์กฐ๊ฑด์ ์ด๋ ๊ฐ๋ฅํ ์ฑ๋์ด 0์ด์ 500000 ์ดํ๋ก ์ฃผ์ด์ง๋ค.
์์์์์ ํฐ ์๋ก ์ด๋ํ ๋ 500000 ๊น์ง ๊ณ ๋ คํ๋ฉด ๋์ง๋ง, ํฐ์์์ ์์์๋ก ๋ด๋ ค์ฌ ์ ๋ ์๊ธฐ ๋๋ฌธ์ 1000000๊น์ง ๊ณ ๋ คํ๋ค.
for n in str(num):
if int(n) in broken:
break
else:
count = min(count, len(str(num)) + abs(num - target))
ํด๋น ์ซ์๊ฐ ๊ณ ์ฅ๋ ๋ฒํผ์ ๋๋ฌ์ผํ๋ ์ซ์๋ฉด break ํ๋ค.
๊ณ ์ฅ๋ฒํผ์ ๋๋ฅด์ง ์๊ณ ์จ์ ํ ์ซ์๋ฅผ ๋ค ๋๋ฅผ ์ ์๋ค๋ฉด count ๊ฐ์ ์ ๋ฐ์ดํธํ๋ค.
count = min(๊ธฐ์กด๋ต, ๋ฒํธ๋ฅผ ๋๋ฅธ ํ์ + ํด๋น ๋ฒํธ๋ก๋ถํฐ ํ๊ฒ๊น์ง์ ์ฐจ์ด)
์๋กญ๊ฒ ๋ฐฐ์ด์ / ๋๋์
- ์ ๋ ฅ์กฐ๊ฑด์ ๋ณด๊ณ ์์ ํ์์ผ๋ก ํ ์ ์์๊ฒ์ด๋ผ๊ณ ์ถ์ธกํ๋ค.
- ์คํฐ๋์์ ๋ค๋ฅธ๋ถ๋ค์ด ์ ๋ ฅ์กฐ๊ฑด๊น์ง ์ธ์ธํ๊ฒ ์ดํผ๋ ์์ธ๋ฅผ ๋ณด๊ณ ๋ฐฐ์ ๋๋ฐ, ์ค์ ๋ก ์ ์ฉํ๋ ์๊ฐ์ด ์ค๋ ์คํฐ๋๋ฅผ ํตํด ์ฑ์ฅํ ๋๋์ด ๋ค์๋ค.
- (๋ํผ์ )์ค๋ฒ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๋ ์ฐ์ต์ ํ๋ค๋ฉด ๊ณจ๋๋ถํฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์ด๋์ด๋ ํ์ํ๊ฒ ๊ฐ๋ค. ์ง๊ธ์ ๊ณจ๋ ๋ฌธ์ ๋ค์ ํ๊ธฐ ํ๋ค์ง๋ง, ํด์๋๊ฒ ์ฒ๋ผ ์ด์ฌํ ๋ ธ๋ ฅํ๋ฉด ๊ณจ๋ ๋ํ ์ ํ์ ์์๊ฑฐ๋ผ ์๊ฐํ๋ค!
๋ ๋์ ์๊ฒฌ์ด๋ ๊ถ๊ธํ์ ๊ฒ ์๋ค๋ฉด ํธํ๊ฒ ๋๊ธ ๋ฌ์์ฃผ์ธ์ :)
'์ฝ๋ฉํ ์คํธ๐ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] ๊ทธ๋ฆผ (0) | 2024.06.18 |
---|---|
[๋ฐฑ์ค] ์ํธ ๋ง๋ค๊ธฐ (0) | 2024.06.17 |
[๋ฐฑ์ค] ๊ฐ์ํ๋ ์ (0) | 2024.06.15 |
[๋ฐฑ์ค] ์ซ์์นด๋2 (0) | 2024.06.14 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ตญ์ฌ์ฌ (0) | 2024.06.10 |