[BOJ] 9655. ๋Œ ๊ฒŒ์ž„(๐Ÿฅˆ, DP)

lemythe423ยท2023๋…„ 7์›” 9์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
8/133
post-thumbnail

๋ฌธ์ œ

๋Œ ๊ฒŒ์ž„์€ ๋‘ ๋ช…์ด์„œ ์ฆ๊ธฐ๋Š” ์žฌ๋ฐŒ๋Š” ๊ฒŒ์ž„์ด๋‹ค.

ํƒ์ž ์œ„์— ๋Œ N๊ฐœ๊ฐ€ ์žˆ๋‹ค. ์ƒ๊ทผ์ด์™€ ์ฐฝ์˜์ด๋Š” ํ„ด์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ๋Œ์„ ๊ฐ€์ ธ๊ฐ€๋ฉฐ, ๋Œ์€ 1๊ฐœ ๋˜๋Š” 3๊ฐœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋Œ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ์‚ฌ๋žŒ์ด ๊ฒŒ์ž„์„ ์ด๊ธฐ๊ฒŒ ๋œ๋‹ค.

๋‘ ์‚ฌ๋žŒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๊ฒŒ์ž„์„ ํ–ˆ์„ ๋•Œ, ์ด๊ธฐ๋Š” ์‚ฌ๋žŒ์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๊ฒŒ์ž„์€ ์ƒ๊ทผ์ด๊ฐ€ ๋จผ์ € ์‹œ์ž‘ํ•œ๋‹ค.

ํ’€์ด

โœ… ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ค‘๋ณต๋œ ํ•˜์œ„ ๋ฌธ์ œ๋“ค์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋ฉฐ ํ’€์ดํ•ด๋‚˜๊ฐ€๋Š” ๊ฒƒ

์ผ๋ฐ˜์ ์œผ๋กœ ํ•˜๋‚˜์˜ ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ์ชผ๊ฐœ๋Š” ๋ฐฉ์‹์„ ๋ถ„ํ•  ์ •๋ณต์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP, Dynamic Programming)์€ ๊ทธ ์ž‘์€ ๋ฌธ์ œ๋“ค์ด ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ œ๋“ค์ด๋ผ ๊ทธ ๋ฌธ์ œ๋“ค์˜ ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•˜๋ฉด ๋” ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ์จ๋จน์„ ์ˆ˜ ์žˆ๋‹ค๋ผ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.

์ฆ‰, ๋ฌธ์ œ์˜ ์ตœ์  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ถ€๋ถ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ตœ์  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค

๐Ÿ’ก ํ’€์ด ์•„์ด๋””์–ด

dp๋ผ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ์ธ๋ฑ์Šค ๊ฐ’ = ๋Œ์˜ ๊ฐœ์ˆ˜๋กœ ๋‘๊ธฐ๋กœ ํ–ˆ๋‹ค. ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ 1๊ฐœ ๋˜๋Š” 3๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ฒŒ ๋˜๋Š”๋ฐ, ๊ฐ€์ ธ๊ฐ€๊ฒŒ ๋˜๊ณ  ๋‚จ๋Š” ๋Œ์˜ ๊ฐœ์ˆ˜์˜ ์นธ์— 1์„ ๋„ฃ์—ˆ๋‹ค. ์ผ์ข…์˜ ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ์…ˆ์ธ๋ฐ, ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋ˆ„๊ฐ€ 3๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ€๊ณ  ๋‚จ์€ ๊ฒŒ 7๊ฐœ์ธ๋ฐ 7๊ฐœ์— 1์ด ์ฐํ˜€์žˆ๊ฒŒ ๋˜๋ฉด(์ด๋ฏธ ๊ทธ ์ด์ „์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ฐ€์ ธ๊ฐ€๊ณ  ๋‚จ์€ ์ˆซ์ž์˜€๋˜ ๊ฒƒ) 3๊ฐœ๋Š” ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ๋งค๋ฒˆ ๊ทธ๋ƒฅ bfs๊ฐ€ ๋œ๋‹ค. dp๋ผ๋Š” ๋ฐฐ์—ด์€ ๋‹จ์ˆœ visited๊ฐ€ ๋˜๊ณ  ๋งค๋ฒˆ queue์— ์ด์ „ ๋ผ์šด๋“œ์—์„œ ๋ช‡ ๊ฐœ์˜ ๋Œ์ด ๋‚จ์•˜์—ˆ๋Š”์ง€๋ฅผ ๋‹ค ์ €์žฅํ•ด๋‘ฌ์•ผ ํ•œ๋‹ค. ์‹ฌ์ง€์–ด ๋ผ์šด๋“œ ํšŒ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•ด์ฃผ๋Š” ๊ฑด turn ์ด๋ผ๋Š” ๋ณ„๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ์—ˆ๋‹ค.
dp๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Œ...

๐Ÿ” ๋‹ค๋ฅธ ํ’€์ด

ํ’€์ด๋ฅผ ์ฐธ๊ณ 

์œ„์—์„œ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋ฐฉ์‹์€ ํ•˜ํ–ฅ์‹์— ๊ฐ€๊น๊ณ  ์ด ํ’€์ด๋Š” ์ƒํ–ฅ์‹์ด๋‹ค
์ฐพ์•„๋ณด๋‹ˆ dp๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ƒํ–ฅ์‹์œผ๋กœ ๋งŽ์ด ํ’€๊ฒŒ ๋˜๊ณ , ํ•˜ํ–ฅ์‹์˜ ๊ฒฝ์šฐ๋Š” ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

์–ด์จŒ๋“  ์ด ํ’€์ด์™€ ๋‚ด ํ’€์ด์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค

dp๋ผ๋Š” ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๊ฐ’์€ ๋Œ์˜ ๊ฐœ์ˆ˜
๋ฐฐ์—ด์˜ ๊ฐ ์นธ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฐ’์€ ๊ฒŒ์ž„์˜ ๋ผ์šด๋“œ ํšŒ์ฐจ

dp[3]์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ๊ฐ’์€ ๋Œ 3๊ฐœ๋ฅผ ๋‘๊ณ  ๊ฒŒ์ž„ํ–ˆ์„ ๋•Œ ์ง„ํ–‰๋˜๋Š” ์ตœ์ข… ๋ผ์šด๋“œ์˜ ํšŸ์ˆ˜. ๊ฒŒ์ž„์€ 1๊ฐœ ๋˜๋Š” 3๊ฐœ์˜ ๋Œ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰๋˜๋ฏ€๋กœ 1๊ฐœ๋‚˜ 3๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ๋ผ์šด๋“œ ํšŸ์ˆ˜๊ฐ€ 1์”ฉ ์ฆ๊ฐ€ํ•œ๋‹ค. dp[3]์€ dp[0](3๊ฐœ์—์„œ 3๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด 0๊ฐœ๊ฐ€ ๋‚จ์Œ)๋˜๋Š” dp[2](3๊ฐœ์—์„œ 1๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด 2๊ฐœ๊ฐ€ ๋‚จ์Œ)์˜ ํšŸ์ˆ˜์— +1์€ ํ•œ ๊ฐ’์ด ๋˜๋Š” ๊ฒƒ. ๋‹น์—ฐํžˆ ๋‘˜ ์ค‘ ๋” ์ž‘์€ ๊ฐ’๋งŒ ๊ฐ€์ ธ์™€์„œ ๊ณ„์‚ฐํ•˜๋ฉด ๋จ

์ •๋ฆฌํ•˜์ž๋ฉด DP ๋ฌธ์ œ์—์„œ dp๋ผ๋Š” ๋ฐฐ์—ด์— ๋„ฃ์–ด์•ผ ํ•  ๊ฐ’์€

์ˆœ์„œ๋Œ€๋กœ ์ด์–ด์ง€๋Š” ๊ฐ’ = ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค
์ตœ์ข…์ ์œผ๋กœ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ฐ’ = ๊ทธ ๋ฐฐ์—ด์˜ ๊ฐ ์ธ๋ฑ์Šค์— ๋“ค์–ด๊ฐˆ ๊ฐ’

๐Ÿ“ ์ตœ์ข… ํ’€์ด

N = int(input())

def rock_game():
    dp = [0]*1001
    dp[1], dp[2] = 1, 2

    for i in range(3, N+1):
        dp[i] = min(dp[i-1] ,dp[i-3])+1
    
    # ํšŸ์ˆ˜๊ฐ€ ์ง์ˆ˜๋ฉด CY, ํ™€์ˆ˜๋ฉด SK๊ฐ€ ์Šน๋ฆฌํ•œ ๊ฒƒ
    if dp[N] % 2:
        return 'SK'
    return 'CY'

print(rock_game())
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€