[Baekjoon] - 9095. 1, 2, 3 ๋”ํ•˜๊ธฐ(S3)

์˜ค๋™ํ›ˆยท2022๋…„ 2์›” 16์ผ
0

Baekjoon

๋ชฉ๋ก ๋ณด๊ธฐ
46/58
post-thumbnail

1. Problem ๐Ÿ“ƒ

๐Ÿ“š ์ถœ์ฒ˜ - 9095 - 1, 2, 3 ๋”ํ•˜๊ธฐ

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

  • 1+1+1+1
  • 1+1+2
  • 1+2+1
  • 2+1+1
  • 2+2
  • 1+3
  • 3+1

์ •์ˆ˜ n์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, n์„ 1, 2, 3์˜ ํ•ฉ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ณ , ์ •์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. n์€ ์–‘์ˆ˜์ด๋ฉฐ 11๋ณด๋‹ค ์ž‘๋‹ค.

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

์ž…์ถœ๋ ฅ ์˜ˆ

์˜ˆ์ œ ์ž…๋ ฅ์˜ˆ์ œ ์ถœ๋ ฅ
3
4
7
10
7
44
274

2. Logic ๐Ÿ‘จโ€๐Ÿซ

๋‹ค์Œ ๋กœ์ง์€ DP ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด ํ•ด๊ฒฐํ•˜๋ฉด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
DP ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฏธ๋ฆฌ ๊ฐ’์„ ์ €์žฅํ•œ ํ›„ ๊ทธ ๊ฐ’์„ ์ด์šฉํ•ด ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋น„์œ ํ•ด ์ด์•ผ๊ธฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

indexvalue
11
22
34
47
513
624
744

7๋ฒˆ์งธ๊นŒ์ง€ ๊ฐ’์„ ๊ตฌํ•ด๋ณธ ํ‘œ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ณด๋ฉด ๊ทœ์น™์ด ๋‹ค๋“ค ๋ณด์ด์‹ค๊นŒ์š”~?

Logic
index 1, 2, 3์„ ๋”ํ•˜๋ฉด 4์˜ ๊ฐ’์ด ๋‚˜์˜ค๊ณ , 5์˜ ๊ฐ’์€ 2, 3, 4์˜ ๊ฐ’์„ ๋”ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
result[i] = result[i-3] + result[i-2] + result[i-1]

3. Code ๐Ÿ’ป

1. ๋‚ด๊ฐ€ ํ‘ผ ์ฝ”๋“œ ๐Ÿ˜

import sys
input = sys.stdin.readline

T = int(input())


for i in range(T):
    result = [1, 2, 4]
    n = int(input())

    if n <= 3:
        print(result[n-1])
        continue
    for i in range(3, n):
        result.append(result[i-3] + result[i-2] + result[i-1])

    print(result[-1])
profile
์‚ฝ์งˆ์˜ ๊ธฐ๋ก๋“ค๐Ÿฅ

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