[Python] 2342 Dance Dance Revolution

2026. 3. 20. 13:01ยทCoding-Test/๋ฐฑ์ค€
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ป ๋ฌธ์ œ ์ •์˜

๋‹ค์Œ ๋ชจ์–‘์˜ DDR์ด ์žˆ๋‹ค.

์ฒ˜์Œ์— ๊ฒŒ์ด๋จธ๋Š” ๋‘ ๋ฐœ์„ ์ค‘์•™์— ๋ชจ์œผ๊ณ  ์žˆ๋‹ค.(๊ทธ๋ฆผ์—์„œ 0์˜ ์œ„์น˜) ๊ทธ๋ฆฌ๊ณ  ๊ฒŒ์ž„์ด ์‹œ์ž‘ํ•˜๋ฉด, ์ง€์‹œ์— ๋”ฐ๋ผ ์™ผ์ชฝ ๋˜๋Š” ์˜ค๋ฅธ์ชฝ ๋ฐœ์„ ์›€์ง์ธ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ์˜ ๋‘ ๋ฐœ์ด ๋™์‹œ์— ์›€์ง์ด์ง€๋Š” ์•Š๋Š”๋‹ค.

์ด ๊ฒŒ์ž„์—๋Š” ์ด์ƒํ•œ ๊ทœ์น™์ด ๋” ์žˆ๋‹ค. ๋‘ ๋ฐœ์ด ๊ฐ™์€ ์ง€์ ์— ์žˆ๋Š” ๊ฒƒ์ด ํ—ˆ๋ฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. (๋ฌผ๋ก  ๊ฒŒ์ž„ ์‹œ์ž‘์‹œ์—๋Š” ์˜ˆ์™ธ์ด๋‹ค) ๋งŒ์•ฝ, ํ•œ ๋ฐœ์ด 1์˜ ์œ„์น˜์— ์žˆ๊ณ , ๋‹ค๋ฅธ ํ•œ ๋ฐœ์ด 3์˜ ์œ„์น˜์— ์žˆ์„ ๋•Œ, 3์„ ์—ฐ์†์œผ๋กœ ๋ˆŒ๋Ÿฌ์•ผ ํ•œ๋‹ค๋ฉด, 3์˜ ์œ„์น˜์— ์žˆ๋Š” ๋ฐœ๋กœ ๋ฐ˜๋ณตํ•ด์•ผ ๋ˆŒ๋Ÿฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์ค‘์•™์— ์žˆ๋˜ ๋ฐœ์ด ๋‹ค๋ฅธ ์ง€์ ์œผ๋กœ ์›€์ง์ผ ๋•Œ, 2์˜ ํž˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์ง€์ ์—์„œ ์ธ์ ‘ํ•œ ์ง€์ ์œผ๋กœ ์›€์ง์ผ ๋•Œ๋Š” 3์˜ ํž˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. (์˜ˆ๋ฅผ ๋“ค๋ฉด ์™ผ์ชฝ์—์„œ ์œ„๋‚˜ ์•„๋ž˜๋กœ ์ด๋™ํ•  ๋•Œ์˜ ์ด์•ผ๊ธฐ์ด๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ๋ฐ˜๋Œ€ํŽธ์œผ๋กœ ์›€์ง์ผ๋•Œ๋Š” 4์˜ ํž˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. (์œ„์ชฝ์—์„œ ์•„๋ž˜์ชฝ์œผ๋กœ, ๋˜๋Š” ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ). ๋งŒ์•ฝ ๊ฐ™์€ ์ง€์ ์„ ํ•œ๋ฒˆ ๋” ๋ˆ„๋ฅธ๋‹ค๋ฉด, ๊ทธ๋•Œ๋Š” 1์˜ ํž˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

๐Ÿ’ก ์ ‘๊ทผ ๋ฐ ์„ค๊ณ„

๋‘ ๋ฐœ์˜ ์œ„์น˜ ์ƒํƒœ๋ฅผ ๋ชจ๋‘ ๊ณ ๋ คํ•˜๋ฉด์„œ DP๋กœ ์ ‘๊ทผํ•˜์˜€๋‹ค.

1 → 2 → 1 ์ˆœ์„œ๋กœ ๋ฐœํŒ์„ ๋ฐŸ๋Š”๋‹ค๊ณ  ํ•˜์˜€์„ ๋•Œ, 1์„ ์™ผ๋ฐœ, 2๋ฅผ ์˜ค๋ฅธ๋ฐœ๋กœ ๋ฐŸ์•˜์„ ๋•Œ, ๋งˆ์ง€๋ง‰ 1์„ ์™ผ๋ฐœ๋กœ ๋ฐŸ์„์ง€, ์˜ค๋ฅธ๋ฐœ๋กœ ๋ฐŸ์„์ง€์— ๋”ฐ๋ผ ๋น„์šฉ์ด ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ทธ๋ฆฌ๋”” ์ ‘๊ทผ์ด ์•„๋‹Œ, DP๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•œ๋‹ค.

DP ํ…Œ์ด๋ธ”์€ dp[i][l][r] ์ฒ˜๋Ÿผ ์„ธ์šธ ์ˆ˜ ์žˆ๋‹ค. i๋ฒˆ์งธ๊นŒ์ง€์˜ ๋ช…๋ น์—์„œ, ์™ผ๋ฐœ์˜ ์œ„์น˜ l๊ณผ ์˜ค๋ฅธ๋ฐœ์˜ ์œ„์น˜r ์ผ๋•Œ ์ตœ์†Œ ๋น„์šฉ์„ ์ €์žฅํ•œ๋‹ค.

โœ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด

def cost(a, b):
    if a == 0:
        return 2
    if a == b:
        return 1
    if abs(a-b) == 2:
        return 4
    return 3

ํ˜„์žฌ์˜ ์œ„์น˜์—์„œ ๋‹ค์Œ ์œ„์น˜๋กœ ๋ฐœ์„ ์˜ฎ๊ธธ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋น„์šฉ์„ ์ •์˜ํ•œ ํ•จ์ˆ˜์ด๋‹ค.

# ํ˜„์žฌ ๋ˆŒ๋Ÿฌ์•ผํ•˜๋Š” ์œ„์น˜
curr = arr[i]

# ์™ผ๋ฐœ ์ด๋™
dp[i+1][curr][r] = min(
    dp[i+1][curr][r],
    cur + cost(l, curr)
)

# ์˜ค๋ฅธ๋ฐœ ์ด๋™
dp[i+1][l][curr] = min(
    dp[i+1][l][curr],
    cur + cost(r, curr)
)

์ด์ „์˜ ์ƒํƒœ์—์„œ, ํ˜„์žฌ ๋ˆŒ๋Ÿฌ์•ผํ•˜๋Š” ์œ„์น˜๋ฅผ ์–ด๋А ๋ฐœ๋กœ ๋ˆ„๋ฅผ์ง€ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ์ตœ์†Ÿ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค.

์ตœ์ข…์ ์œผ๋กœ ๋งˆ์ง€๋ง‰ ์ƒํƒœ์— ์ €์žฅ๋œ ๊ฐ’๋“ค ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ—’๏ธ ์ตœ์ข… ์ œ์ถœ ์ฝ”๋“œ

# 2342 Dance Dance Revolution

import sys
# input = sys.stdin.readline

def cost(a, b):
    if a == 0:
        return 2
    if a == b:
        return 1
    if abs(a-b) == 2:
        return 4
    return 3

arr = list(map(int, input().split()))
arr.pop()

INF = 10**9
n = len(arr)

dp = [[[INF] * 5 for _ in range(5)] for _ in range(n+1)]
dp[0][0][0] = 0

for i in range(n):
    curr = arr[i]

    for l in range(5):
        for r in range(5):

            cur = dp[i][l][r]
            if cur == INF:
                continue

            # ์™ผ๋ฐœ ์ด๋™
            dp[i+1][curr][r] = min(
                dp[i+1][curr][r],
                cur + cost(l, curr)
            )

            # ์˜ค๋ฅธ๋ฐœ ์ด๋™
            dp[i+1][l][curr] = min(
                dp[i+1][l][curr],
                cur + cost(r, curr)
            )

ans = INF
for l in range(5):
    for r in range(5):
        ans = min(ans, dp[n][l][r])

print(ans)

๐Ÿ’ญ ์˜ค๋Š˜์˜ ํšŒ๊ณ 

-

728x90
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding-Test > ๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Python] 16724 ํ”ผ๋ฆฌ ๋ถ€๋Š” ์‚ฌ๋‚˜์ด  (0) 2026.03.26
[Python] 1766 ๋ฌธ์ œ์ง‘  (0) 2026.03.26
[Python] 11049 ํ–‰๋ ฌ ๊ณฑ์…ˆ ์ˆœ์„œ  (0) 2026.03.20
[Python] 16947 ์„œ์šธ ์ง€ํ•˜์ฒ  2ํ˜ธ์„   (0) 2026.03.19
[Python] 2613 ์ˆซ์ž๊ตฌ์Šฌ  (0) 2026.03.18
'Coding-Test/๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Python] 16724 ํ”ผ๋ฆฌ ๋ถ€๋Š” ์‚ฌ๋‚˜์ด
  • [Python] 1766 ๋ฌธ์ œ์ง‘
  • [Python] 11049 ํ–‰๋ ฌ ๊ณฑ์…ˆ ์ˆœ์„œ
  • [Python] 16947 ์„œ์šธ ์ง€ํ•˜์ฒ  2ํ˜ธ์„ 
ํฌ์™„
ํฌ์™„
ํฌ์™„ํ•œ ์ฝ”๋”ฉ์ผ์ƒ
    ๋ฐ˜์‘ํ˜•
  • ํฌ์™„
    Code-Heewan
    ํฌ์™„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
      • Python
        • ๊ฐ€์ƒํ™˜๊ฒฝ
      • Algorithm
      • Coding-Test
        • ๋ฐฑ์ค€
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
        • ํ•ญํ•ด99
      • Data-Analysis
      • ์›น ๊ฐœ๋ฐœ
        • django
      • AWS
      • ๊ณต๋ชจ์ „
      • Mobile
  • ๋งํฌ

    • Github
  • 300x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
ํฌ์™„
[Python] 2342 Dance Dance Revolution
์ƒ๋‹จ์œผ๋กœ

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