๐Ÿงฉ Algorithm/[BOJ] Silver

BOJ 9461๋ฒˆ : ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด (Python/Silver 3)

devCloud 2023. 10. 26. 00:23
728x90
 

9461๋ฒˆ: ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด

์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์‚ผ๊ฐํ˜•์ด ๋‚˜์„  ๋ชจ์–‘์œผ๋กœ ๋†“์—ฌ์ ธ ์žˆ๋‹ค. ์ฒซ ์‚ผ๊ฐํ˜•์€ ์ •์‚ผ๊ฐํ˜•์œผ๋กœ ๋ณ€์˜ ๊ธธ์ด๋Š” 1์ด๋‹ค. ๊ทธ ๋‹ค์Œ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ ์ •์‚ผ๊ฐํ˜•์„ ๊ณ„์† ์ถ”๊ฐ€ํ•œ๋‹ค. ๋‚˜์„ ์—์„œ ๊ฐ€์žฅ ๊ธด ๋ณ€์˜

www.acmicpc.net


์„ค๋ช…

์ฒซ ์ •์‚ผ๊ฐํ˜•์ด 1์ผ ๋•Œ ๋ณ€์˜ ๊ธธ์ด๋Š” 1์ด๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋‚˜์„ ํ˜•์œผ๋กœ ์‚ผ๊ฐํ˜•์ด ์ด์–ด์ง„๋‹ค. ๋งŒ์•ฝ 1, 1, 1, 2, 2, 3, 4, 5, 7, 9 ๊ฐ€ ์žˆ์„ ๋•Œ 10๋ฒˆ์งธ ์‚ผ๊ฐํ˜•์˜ ๋ณ€์˜ ๊ธธ์ด๋Š” 9์ด๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ N๋ฒˆ์งธ ์‚ผ๊ฐํ˜•์˜ ๋ณ€์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

 

ํ’€์ด

• Dynamic Programming ๋ฌธ์ œ

 

ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด๊ณผ ๋น„์Šทํ•˜๋‹ค. ๊ทœ์น™์„ฑ์„ ์ฐพ์•„๋ณด๋ฉด ์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ 1๋ฒˆ์งธ์™€ 2๋ฒˆ์งธ๋ฅผ ๋”ํ•˜๋ฉด 4๋ฒˆ์งธ ๊ฐ’์ด ๋‚˜์˜จ๋‹ค. ๊ณ ๋กœ, 4๋งŒํผ ์ฐจ์ด๊ฐ€ ๋‚œ๋‹ค. 

๋˜ํ•œ, ์•„๋ž˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด 1๋ฒˆ์งธ์™€ 5๋ฒˆ์งธ๋ฅผ ๋”ํ•˜๋ฉด 6๋ฒˆ์งธ ๊ฐ’๊ณผ ๊ฐ™๋‹ค. 

์ด๋Ÿฌํ•œ ๊ทœ์น™์„ฑ์„ ์ฐธ๊ณ ํ•ด ๊ตฌํ˜„ํ•œ๋‹ค. 

 

Solution

sol.1

#23:11 - 23:36

import sys
input = sys.stdin.readline

t = int(input()) #ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค

def DP(n):
    dp = [0] * (n)
    dp[0] = 1
    dp[1] = 1
    dp[2] = 1

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

for _ in range(t): #ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งŒํผ ๋ฐ˜๋ณต
    n = int(input())
    if n == 1 or n == 2 :
        print(1)
    else:
        print(DP(n))

 

sol.2

#๋‹ค๋ฅธ ํ’€์ด

t = int(input())
 
l = [1,1,1,2,2]
for i in range(5, 100):
    l.append(l[i-1]+l[i-5])
 
for _ in range(t):
    n = int(input())
    print(l[n-1])

 


๐Ÿ‘ฉ‍๐Ÿ’ป ํšŒ๊ณ 

์ฒ˜์Œ ์ œ์ถœํ–ˆ์„ ๋•Œ 'IndexError'๊ฐ€ ๋–ด๋‹ค. ๋ฐ˜๋ก€๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ dp๋ฆฌ์ŠคํŠธ๊ฐ€ n๋งŒํผ ์ƒ์„ฑ๋˜๊ฒŒ ํ–ˆ๋Š”๋ฐ n = 1, 2 ์ผ ๋•Œ๋Š” ๊ณต๊ฐ„์ด ์—†์–ด์„œ ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์„ ๋„ฃ์ง€ ๋ชปํ•˜๊ณ , 3๋ฒˆ์งธ๋ถ€ํ„ฐ for๋ฌธ์„ ๋Œ๊ฒŒ ํ–ˆ๋Š”๋ฐ i๊ฐ€ 3์ผ ๋•Œ๋Š” ๋Œ์ง€ ๋ชปํ•œ๋‹ค๋Š” ๊ฑธ ๊นจ๋‹ฌ์•˜๋‹ค. ๊ทธ๋ž˜์„œ DP ํ•จ์ˆ˜ ๋‚ด์—์„œ ์กฐ๊ฑด์‹์„ ์ถ”๊ฐ€ํ–ˆ๋Š”๋ฐ ๋‹ค์‹œ ์—๋Ÿฌ๊ฐ€ ๋–ด๋‹ค.

 

n์ด 2์ดํ•˜์ผ ๋•Œ ๋ฆฌ์ŠคํŠธ 0๋ถ€ํ„ฐ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค๊นŒ์ง€ ๊ฐ’์„ ๋„ฃ๊ฒŒ ํ–ˆ๋”๋‹ˆ n์ด 1์ผ ๋•Œ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ๋ฒ„๋ฆฌ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์กฐ๊ฑด์‹์„ ํ•œ๋ฒˆ์— ๊ฑธ์–ด๋ฒ„๋ ค์„œ main์— n์ด 1์ผ ๋•Œ์™€ 2์ผ ๋•Œ๋ฅผ ๋”ฐ๋กœ ๋‚˜๋ˆด๋”๋‹ˆ ์—๋Ÿฌ ์—†์ด ์ œ์ถœ์ด ๋๋‹ค.

 

์ฒซ ๋ฒˆ์งธ ํ’€์ด(๋‚ด ํ’€์ด)์™€ ๋‘ ๋ฒˆ์งธ ํ’€์ด(๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด)์˜ ๋ฉ”๋ชจ๋ฆฌ์™€ ์‹œ๊ฐ„์€ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ„๊ฒฐํ•œ ํ’€์ด๋Š” ๋‘ ๋ฒˆ์งธ ํ’€์ด์ด๋‹ค. DP๋ผ๊ณ  ํ•ด์„œ ๋ณต์žกํ•˜๊ฒŒ ์ƒ๊ฐํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ์ข€ ๋” ๊น”๋”ํ•œ ํ’€์ด๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ์ƒ๊ฐ์„ ์˜ค๋ž˜ ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

728x90