๋ฐฐ๋„ˆ ์ด๋ฏธ์ง€

22251๋ฒˆ: ๋นŒ๋Ÿฐ ํ˜ธ์„(ํŒŒ์ด์ฌ)

2025. 4. 26. 23:53ยท์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ’ก ๋ฌธ์ œ ์š”์•ฝ

  • 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
'์•Œ๊ณ ๋ฆฌ์ฆ˜' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ฐฑ์ค€ 2075: N๋ฒˆ์งธ ํฐ ์ˆ˜(JAVA)
  • ๋ฐฑ์ค€ 13114: List of Unique Numbers(ํŒŒ์ด์ฌ)
  • ๋ฐฑ์ค€ 4179: ๋ถˆ!(ํŒŒ์ด์ฌ)
  • ๋ฐฑ์ค€ 1253: ์ข‹๋‹ค(ํŒŒ์ด์ฌ)
quokkaST
quokkaST
  • quokkaST
    stquokka
    quokkaST
    • ๊ฐœ๋ฐœ์ž (77)
      • n8n (2)
      • CS๊ณต๋ถ€ (46)
        • Java & Spring (15)
        • ์ธํ”„๋ผ (7)
        • ์šด์˜์ฒด์ œ & ์‹œ์Šคํ…œ (9)
        • ๊ธฐํƒ€ CS์ง€์‹ (7)
        • ๋„คํŠธ์›Œํฌ (6)
        • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (2)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (16)
      • ํ”„๋กœ์ ํŠธ (8)
        • ๊ฐ์ •&๊ธˆ์œต์ฑ—๋ด‡ (8)
      • ๋ฆฌํŒฉํ† ๋ง (5)
        • horong (5)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”