๊ด€๋ฆฌ ๋ฉ”๋‰ด

Algo ์“ฐ์ž

[Baekjoon] 9095๋ฒˆ 1, 2, 3 ๋”ํ•˜๊ธฐ ๋ณธ๋ฌธ

๐Ÿ’ฏ CodingTest/BaekJoon

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

S.Honey 2022. 6. 17. 17:06

โ–ถ ๋ฌธ์ œ : https://www.acmicpc.net/problem/9095

 

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

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

www.acmicpc.net

 

=> ๊ธฐ์กด ๋ฐฑ์ค€ ๋ฌธ์ œ๋ฅผ Javascript๋ฅผ ์ด์šฉํ•ด ํ’€์ดํ•˜์˜€์—ˆ๋Š”๋ฐ, ์ž…์ถœ๋ ฅ๊ด€๋ จํ•ด์„œ ๋งž๊ฒŒ ํ’€์–ด๋„ ํ‹€๋ฆฌ๋‹ค ๋‚˜์˜ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์–ด์„œ ๋ฐฑ์ค€์˜ ๊ฒฝ์šฐ๋Š” python์„ ์‚ฌ์šฉํ•ด์„œ ํ’€์ดํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์˜€๋‹ค. 

 

โ–ถ ์ฝ”๋“œ : 

# https://www.acmicpc.net/problem/9095
# ๋ฐฑ์ค€ 1, 2, 3 ๋”ํ•˜๊ธฐ

T = int(input())
testCase = []

for t in range(T):
    testCase.append(int(input()))

maxNum = max(testCase)
dp = [0 for _ in range(maxNum+1)]

dp[1] = 1
dp[2] = 2
dp[3] = 4

for i in range(4, maxNum+1):
    dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]

for t in testCase:
    print(dp[t])

 

 

โ–ถ ๋ฌธ์ œํ’€์ด : 

- DP ๋ฌธ์ œ์ด๋‹ค. 

1. ์ดˆ๊ธฐ ์ž…๋ ฅ์„ ๋ฐ›์•„ ์ž…๋ ฅ ์ค‘ ๊ฐ€์žฅ ํฐ์ˆ˜๋ฅผ ์ฐพ๋Š”๋‹ค. 

2. ๊ทธํ›„ maxNum๋งŒํผ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉฐ dp ๋ฐฐ์—ด์— ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. 

 

=> ํ•ด๋‹น ๋ฌธ์ œ์—์„œ๋Š” 1, 2, 3์œผ๋กœ ๋ง์…ˆ์„ ํ‘œํ˜„ํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. 

=> ์ด๋•Œ ๊ฐ ์ˆ˜ ๋ณ„๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ’์ด 1, 2, 3 ์ผ๋•Œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์ ํ™”์‹์€ 

 

F(n) = F(n-1) + F(n-2) + F(n-3) 

์ด๋‹ค. 

๋”ฐ๋ผ์„œ ์œ„์˜ ์ ํ™”์‹์„ ์ด์šฉํ•ด for๋ฌธ์„ ๋Œ๋ ค์ฃผ๋ฉด dp ๋ฐฐ์—ด์„ ๋ˆ„์ ํ–ˆ๊ณ , ์ด๋•Œ ์ฃผ์–ด์ง„ ์ž…๋ ฅ์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ๋ฐฐ์—ด์„ ์ฑ„์šด๋‹ค์Œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค.