ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 9657 ๋Œ ๊ฒŒ์ž„ 3 with Python
    PS 2023. 4. 4. 17:46
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 9657 ๋Œ ๊ฒŒ์ž„ 3

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ํƒ์ž ์œ„์— ๋Œ N๊ฐœ๊ฐ€ ์žˆ๋‹ค. ์ƒ๊ทผ์ด์™€ ์ฐฝ์˜์ด๋Š” ํ„ด์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉด์„œ ๋Œ์„ ๊ฐ€์ ธ๊ฐ€๋ฉฐ, ๋Œ์€ 1๊ฐœ, 3๊ฐœ ๋˜๋Š” 4๊ฐœ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
    2. ๋งˆ์ง€๋ง‰ ๋Œ์„ ๊ฐ€์ ธ๊ฐ€๋Š” ์‚ฌ๋žŒ์ด ๊ฒŒ์ž„์„ ์ด๊ธฐ๊ฒŒ ๋œ๋‹ค.
    3. ๋‘ ์‚ฌ๋žŒ์ด ์™„๋ฒฝํ•˜๊ฒŒ ๊ฒŒ์ž„์„ ํ–ˆ์„ ๋•Œ, ์ด๊ธฐ๋Š” ์‚ฌ๋žŒ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ.
    4. ๊ฒŒ์ž„์€ ์ƒ๊ทผ์ด๊ฐ€ ๋จผ์ € ์‹œ์ž‘ํ•œ๋‹ค.
    5. ์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N โ‰ค 1000)
      ์ƒ๊ทผ์ด๊ฐ€ ๊ฒŒ์ž„์„ ์ด๊ธฐ๋ฉด SK๋ฅผ, ์ฐฝ์˜์ด๊ฐ€ ๊ฒŒ์ž„์„ ์ด๊ธฐ๋ฉด CY์„ ์ถœ๋ ฅํ•œ๋‹ค.
    6. ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ 1

    6

    ์‹คํ–‰๊ฒฐ๊ณผ 1

    SK

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ์ƒ๊ทผ์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ DP ๋ฐฐ์—ด์„ ๊ตฌ์„ฑํ•  ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด, ์–ด๋–ป๊ฒŒํ•˜๋ฉด ์ƒ๊ทผ์ด๊ฐ€ ์ด๊ธธ ์ˆ˜ ์žˆ์„์ง€์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ข‹๋‹ค.
      "์™„๋ฒฝํ•˜๊ฒŒ ๊ฒŒ์ž„์„ ํ•œ๋‹ค" ๋ผ๋Š” ๊ตฌ์ ˆ์„ ํ†ตํ•ด์„œ ์–ด๋–ป๊ฒŒ๋“  ์ƒ๊ทผ์ด๊ฐ€ ์ด๊ธธ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด,
      DP ๋ฐฐ์—ด์—์„œ ๊ทธ ๊ฐœ์ˆ˜๋Š” ์ƒ๊ทผ์ด๊ฐ€ ์ด๊ธฐ๋Š” ํŒ์œผ๋กœ ๊ธฐ๋ก์„ ํ•ด๋‘๋Š”๊ฒƒ์ด ์˜ณ๋‹ค.

    2. ๋ฌธ์ œ์—์„œ ๋Œ์„ ๋„ค๊ฐœ๊นŒ์ง€ ๊ฐ€์ ธ ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋‹ˆ dp[4]๊นŒ์ง€ ์ง์ ‘ ๊ณ„์‚ฐํ•˜๋ฉฐ ์‚ดํŽด๋ณด์ž.
      ๋Œ์ด 1๊ฐœ์ผ ๋•Œ, ์ƒ๊ทผ์ด๋Š” 1๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๊ธฐ๊ฒŒ ๋œ๋‹ค. -> 1
      ๋Œ์ด 2๊ฐœ์ผ ๋•Œ, ์ƒ๊ทผ์ด๋Š” 1๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ง€๊ฒŒ ๋œ๋‹ค. -> 0
      ๋Œ์ด 3๊ฐœ์ผ ๋•Œ, ์ƒ๊ทผ์ด๋Š” 1, 3๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ์ด๊ธธ์ˆ˜ ์žˆ๋‹ค. -> 1
      ๋Œ์ด 4๊ฐœ์ผ ๋•Œ, ์ƒ๊ทผ์ด๋Š” 1, 3, 4๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, 4๊ฐœ๋ฅผ ๊ฐ€์ ธ๊ฐ€๋ฉด ์ด๊ธธ ์ˆ˜ ์žˆ๋‹ค. -> 1

    3. (2)๋ฒˆ๊ณผ ๊ฐ™์ด ๊ณ„์‚ฐํ–ˆ์„ ๋•Œ, DP ๋ฆฌ์ŠคํŠธ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋œ๋‹ค.
      0 ~ 4๊นŒ์ง€ ๊ณ„์‚ฐํ•œ ๊ฒฐ๊ณผ + ์ž…๋ ฅ๋ฐ›์€ n - 4๊ฐœ์˜ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ ๋ฆฌ์ŠคํŠธ

    dp = [0, 1, 0, 1, 1] + [0] * (n - 4)

    1. dp[๊ฐ€์ ธ๊ฐˆ ๋Œ์˜ ๊ฐœ์ˆ˜]๋กœ ๋ณด๋ฉด 1 ํ˜น์€ 0์˜ ๊ฐ’์ด ์žˆ๋‹ค.
      1์˜ ๊ฐ’์ผ ๋•Œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ์ƒ๊ทผ์ด๊ฐ€ ๋จผ์ € ์‹œ์ž‘์„ ํ–ˆ์„ ๋•Œ ์ด๊ธธ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์ง„๋‹ค.
      ๋ฐ˜๋Œ€๋กœ 0์˜ ๊ฐ’์ผ ๋•Œ๋Š” ๋ฌด์กฐ๊ฑด ์ด๊ธธ ์ˆ˜ ์žˆ๋‹ค.

    2. (4)๋ฒˆ์—์„œ ์•Œ์•„๋ณธ ๊ฒƒ์„ ํ† ๋Œ€๋กœ ๋ณด๋ฉด, ๋Œ ํ•œ๊ฐœ, ์„ธ๊ฐœ, ๋„ค๊ฐœ ๊ฐ€์ ธ๊ฐ”์„ ๋•Œ์˜ dp๊ฐ’์— 0์ด ์žˆ๋‹ค๋ฉด ๋ฌด์กฐ๊ฑด ์ƒ๊ทผ์ด๊ฐ€ ์ด๊ธด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

    3. ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด์„œ n๋ฒˆ ์งธ ๋ฆฌ์ŠคํŠธ๊นŒ์ง€ ๊ณ„์‚ฐํ•˜์—ฌ ๊ฐ’์„ ์ •ํ•œ ๋’ค, dp[n] ์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    n = int(stdin.readline())
    arr = [0, 1, 0, 1, 1] + [0] * (n - 4)
    
    for i in range(5, n + 1):
        if 0 in [arr[i - 1], arr[i - 4], arr[i - 3]]:
            arr[i] = 1
        else:
            arr[i] = 0
    
    print('SK' if arr[n] else 'CY')
    
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.