๊ธฐ๋ก๋ฐฉ

BOJ_9095 : 1, 2, 3 ๋”ํ•˜๊ธฐ ๋ณธ๋ฌธ

CodingTest/Python

BOJ_9095 : 1, 2, 3 ๋”ํ•˜๊ธฐ

Soom_1n 2022. 9. 3. 02:29

ใ…Š๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

9095๋ฒˆ: 1, 2, 3 ๋”ํ•˜๊ธฐ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค, n์„ 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๋ฅผ 1,2,3์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • dp์™€ ํšŒ๊ท€ ๋ฐฉ๋ฒ• ๋‘ ๊ฐ€์ง€๋กœ ํ’€์ด ๊ฐ€๋Šฅํ•œ๋ฐ, dp๋กœ ํ’€์ดํ–ˆ๋‹ค.
    • 1,2,3 ์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
      • (1) : 1  >> 1๊ฐœ
      • (2) : 1+1 , 2  >> 2๊ฐœ
      • (3) : 1+1+1, 1+2, 2+1, 3  >> 4๊ฐœ
    • 1,2,3์€ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ €์žฅํ•ด๋‘๊ณ , 4๋ถ€ํ„ฐ '1,2,3 ๋”ํ•˜๊ธฐ ์–ด๋–ค ์ˆ˜'์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ƒ๊ฐํ•œ๋‹ค.
      • 1+3 : 1 + (3์„ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜)  >> 1+(1+1+1), 1+(1+2), 1+(2+1), 1+(3)
      • 2+2 : 2 + (2๋ฅผ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜)  >> 2+(1+1) , 2+(2)
      • 3+1 : 3 + (1์„ ํ‘œํ˜„ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜)  >> 3+(1)
      • ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•œ๋ฐ, ๊ฒฐ๊ตญ ์ ํ™”์‹์€ dp[n] = dp[n-3] + dp[n-2] + dp[n-1] ์ด ๋œ๋‹ค .

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

dp = [1,2,4]
for _ in range(int(input())):
    t = int(input())
    
    if len(dp) < t:
        for _ in range(t - len(dp)):
            dp.append(dp[-1] + dp[-2] + dp[-3])
    
    print(dp[t-1])

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • dp ๋ฆฌ์ŠคํŠธ์— 1,2,3์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜ 1,2,4๋ฅผ ์ €์žฅํ•œ๋‹ค.
  • ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๊ฐ€ dp๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๋ณด๋‹ค ํฌ๋ฉด(์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค๋ฉด), ์ฐจ์ด๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค ๋ฆฌ์ŠคํŠธ๋ฅผ ๋Š˜๋ฆฐ๋‹ค.
  • dp ๋ฆฌ์ŠคํŠธ์—์„œ ์ž…๋ ฅ ์ˆ˜ ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ๋ฐ˜๋ณต ๊ทœ์น™์€ ๋ˆˆ์น˜์ฑ˜์ง€๋งŒ, ์›๋ฆฌ๊ฐ€ ์ดํ•ด๋˜์ง€ ์•Š์•„์„œ ํ’€์ด ํฌ์ŠคํŒ…์„ ์ฐพ์•„๋ณด์•˜๋‹ค.
    • ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜๋Š” ์›๋ฆฌ๋ฅผ ๊ฐ„๋‹จํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ๋‹ค๋ฅธ ๊ธ€์—์„œ ํšŒ๊ท€๋กœ ์›๋ฆฌ๋ฅผ ์„ค๋ช…ํ•œ ๊ฑธ ๋ดค๋Š”๋ฐ, ๊ธ€์ด ๊ธธ์–ด์งˆ๊นŒ๋ด ์„ค๋ช…ํ•˜์ง„ ์•Š์•˜๋‹ค.
    • 0๋ถ€ํ„ฐ 1, 2, 3์„ ๋”ํ•˜๊ณ , ๊ฐ ๊ฐ’์—์„œ ๋‹ค์‹œ 1, 2, 3์„ ๋”ํ•ด๊ฐ€๋ฉฐ ์ˆ˜๊ฐ€ ๊ณ„์† ๋Š˜์–ด๋‚˜๋Š” ์›๋ฆฌ๋‹ค.
  • dp๋ฌธ์ œ๋ฅผ ๋” ์—ฐ์Šตํ•ด์•ผ๊ฒ ๋‹ค.

728x90