๐ก ๋ฌธ์ ์์ฝ
- 1๋ถํฐ N๊น์ง์ ๋ฒํธ๋ฅผ K์๋ฆฌ 7-์ธ๊ทธ๋จผํธ ๋์คํ๋ ์ด๋ก ํํ
- ํ์ฌ ํ์๋ ํ์ด์ง X์์ ์ต๋ P๋ฒ์ ์ธ๊ทธ๋จผํธ ์ค์์น(on↔off)๋ก ์ด๋ ๊ฐ๋ฅํ ๋ค๋ฅธ ํ์ด์ง ์๋ฅผ ๊ตฌํ๋ผ
- ๋จ, X ์์ ์ ์ ์ธ
๐ง ๋ฌธ์ ๋ฐฐ๊ฒฝ
7-์ธ๊ทธ๋จผํธ ๋์คํ๋ ์ด๋ ๋ค์ 7๊ฐ ์ ๋ถ(์ธ๊ทธ๋จผํธ) ์กฐํฉ์ผ๋ก ์ซ์๋ฅผ ํ์ํ๋ค:
--0-- ← ์๋จ
| |
5| |1 ← ์ข/์ฐ ์๋จ
| |
--6-- ← ์ค์
| |
4| |2 ← ์ข/์ฐ ํ๋จ
| |
--3-- ← ํ๋จ
- ๊ฐ ์ซ์(0~9)๋ ๊ณ ์ ์ ์ธ๊ทธ๋จผํธ ์ผ์ง/๊บผ์ง ํจํด์ ๊ฐ์ง
- ํ ์ซ์์์ ๋ค๋ฅธ ์ซ์๋ก ๋ฐ๊ฟ ๋, ์ผ๊ฑฐ๋ ๊บผ์ผ ํ ์ธ๊ทธ๋จผํธ ์ = ์ค์์น ๋น์ฉ
- ์ค์์น ๋น์ฉ ํฉ์ด P ์ดํ์ธ ๊ฒฝ์ฐ์๋ง ์ด๋ ๊ฐ๋ฅ
๐ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ
1๏ธโฃ ์ธ๊ทธ๋จผํธ ํจํด ์ ์
# 0~9 ๊ฐ๊ฐ 7๊ฐ ์ธ๊ทธ๋จผํธ on(1)/off(0) ๋ฐฐ์ด
segment_map = {
0: [1,1,1,1,1,1,0], 1: [0,1,1,0,0,0,0],
2: [1,1,0,1,1,0,1], 3: [1,1,1,1,0,0,1],
4: [0,1,1,0,0,1,1], 5: [1,0,1,1,0,1,1],
6: [1,0,1,1,1,1,1], 7: [1,1,1,0,0,0,0],
8: [1,1,1,1,1,1,1], 9: [1,1,1,1,0,1,1]
}
2๏ธโฃ ์ค์์น ๋น์ฉ ํ ์ด๋ธ ๊ตฌ์ถ
- ๋ชจ๋ ์ซ์ ์ (a, b)์ ๋ํด 7๊ฐ ์ธ๊ทธ๋จผํธ ๋น๊ต
- ๋ค๋ฅผ ๋๋ง๋ค +1
- O(10×10×7) = 700ํ ์ฐ์ฐ (์์ ์๊ฐ)
# switch_map[a][b] = a→b ์ ํ ์ค์์น ํ์
switch_map = [[0]*10 for _ in range(10)]
for a in range(10):
for b in range(10):
cost = 0
for seg in range(7):
if segment_map[a][seg] != segment_map[b][seg]:
cost += 1
switch_map[a][b] = cost
3๏ธโฃ ํ๋ณด ํ์ด์ง ๋น๊ต
- 1๋ถํฐ N๊น์ง ์ํ (X ์ ์ธ)
- ๊ฐ ์ num์
str(num).zfill(K)๋ก K์๋ฆฌ ๋ฌธ์์ดํ - ๊ฐ ์๋ฆฌ i์์
switch_map[x_i][num_i]ํฉ์ฐ - ํฉ์ด P ์ดํ์ด๋ฉด ์ด๋ ๊ฐ๋ฅ → ์นด์ดํธ++
n, k, p, x = map(int, input().split())
x_str = str(x).zfill(k)
ans = 0
for num in range(1, n+1):
if num == x:
continue
s = str(num).zfill(k)
total = 0
for xi, yi in zip(x_str, s):
total += switch_map[int(xi)][int(yi)]
if total > p:
break
else:
ans += 1
print(ans)
โ ์๊ฐ ๋ณต์ก๋ ๋ถ์
| ๋จ๊ณ | ์ฐ์ฐ๋ | ๋ณต์ก๋ |
|---|---|---|
| ์ธ๊ทธ๋จผํธ ํจํด ์ ์ | ์์ | O(1) |
| ์ค์์น ํ ์ด๋ธ ๊ตฌ์ถ | 700ํ | O(1) |
| ํ๋ณด ํ์ด์ง ๋น๊ต | N × K × O(1) | O(N·K) |
- ์ต๋ N, K ≤ 1,000์ด๋ผ๋ฉด N·K ≤ 10โถ → ์ถฉ๋ถํ ๋น ๋ฆ
๐ ์ ๋ฆฌ
- 7-์ธ๊ทธ๋จผํธ ๋์คํ๋ ์ด ์ ํ์ ์๋ฆฌ๋ณ ์ค์์น ๋น์ฉ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํด๋๋ฉด ๋น ๋ฆ
- ์ ๋ ฌ, ํ์ ์์ด O(N·K) ๋ก ๋ชจ๋ ํ๋ณด๋ฅผ ๊ฒ์ฌ ๊ฐ๋ฅ
- K์๋ฆฌ ํ์์ ์ค์์น ์ต๋ ํ์ P ์ ์ฝ์ ๊ณ ๋ คํ์ฌ ํจ์จ์ ์ผ๋ก ๊ตฌํํ ์ ์๋ค
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ๋ฐฑ์ค 2075: N๋ฒ์งธ ํฐ ์(JAVA) (0) | 2025.05.06 |
|---|---|
| ๋ฐฑ์ค 13114: List of Unique Numbers(ํ์ด์ฌ) (0) | 2025.04.28 |
| ๋ฐฑ์ค 4179: ๋ถ!(ํ์ด์ฌ) (0) | 2025.04.26 |
| ๋ฐฑ์ค 1253: ์ข๋ค(ํ์ด์ฌ) (0) | 2025.04.25 |
| ๋ฐฑ์ค 4485: ๋ น์ ์ท ์ ์ ์ ๊ฐ ์ ค๋ค์ง?(ํ์ด์ฌ) (0) | 2025.04.25 |