๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜

[์ด์ฝ”๋‹ค] ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ

by Tamii 2021. 8. 23.
๋ฐ˜์‘ํ˜•

p.217 - 1๋กœ๋งŒ๋“ค๊ธฐ 

์ฒ˜์Œ ํ’€์ด(์˜ค๋‹ต)

def solution(num):
    cnt=0
    
    def calculate(x):
    
        if x%5==0:
            return x//5
            
        elif x%3==0:
            return x//3
            
        elif x%2==0:
            return x//2
            
        elif x>1:
            return x-1
            
    while num!=1:
        num = calculate(num)
        cnt+=1

solution(26) #5

๊ทธ๋ฆฌ๋””์ฒ˜๋Ÿผ ํ‘ผ ์ฒ˜์Œ ํ’€์ด

์ฒซ ๋‹จ๊ณ„์— ์œ„์™€๊ฐ™์€ ์ˆœ์„œ๋กœ ํ•ด์•ผ์ง€ ๊ฐ€์žฅ ์ž‘์€ ์—ฐ์‚ฐ์˜ ํšŸ์ˆ˜๊ฐ€ ๋‚˜์˜จ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์™€ ๊ฐ™์ด ํ•˜๋ฉด 2๋กœ ๋จผ์ € ๋‚˜๋ˆ„๊ฒŒ ๋˜๊ณ  ๊ทธ๋Ÿฌ๋ฉด ๋‹ต์•ˆ๊ณผ ๋‹ค๋ฅด๊ฒŒ 5๋ผ๋Š” ๋‹ต์ด ๋‚˜์˜จ๋‹ค.

 

 

์ด ๋ฌด์ œ๋Š” ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๊ณ  ๊ทธ ๊ทผ๊ฑฐ๋Š”

1) ๋ถ€๋ถ„์ ์ธ ์—ฐ์‚ฐ์˜ ํ•ฉ์ด ๋‹ต์ด ๋œ๋‹ค.

2) ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.

 

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฌธ์ œ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•ด์„œ ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ,

๊ฐ€๋ น ์˜ˆ์‹œ๋กœ x=6์ด๋ผ๊ณ  ์น˜๋ฉด

6์˜ ์ „๋‹จ๊ณ„๋Š” ๊ฐ€๋Šฅํ•œ 4๊ฐ€์ง€ ์—ฐ์‚ฐ์ค‘์— 5๋นผ๊ณ  ๋‹ค๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ

3๊ฐ€์ง€ ์ „ ์—ฐ์‚ฐ๋“ค์˜ ์—ฐ์‚ฐํšŸ์ˆ˜ ์ค‘ ์ตœ์†Œ์ธ ๊ฐ’์ด f(6)์˜ ๊ฐ’์ด ๋œ๋‹ค

-1 //2 //3 //5

 

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

def solution():
    x=  int(input())
    d = [0]*30001

    for i in range(2,x+1):
        d[i] = d[i-1]+1
        if i%2 == 0:
            d[i]= min(d[i],d[i//2]+1)
        if i%3 ==0:
            d[i] = min(d[i],d[i//3]+1)
        if i%5 ==0 :
            d[i] = min(d[i],d[i//5]+1)
    print(d[x])

solution()

p.220 - ๊ฐœ๋ฏธ์ „์‚ฌ

์ฒ˜์Œ์—” ๊ฐ ๊ฐœ์ˆ˜์˜ ์–‘ ์‚ฌ์ด๋“œ๋งŒ ์„ธ๋Š” ๊ฐ’๋“ค์„ ๋”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋†€๋ผ์šด ํ’€์ด ๋ฐฉ๋ฒ•์ด ์žˆ์—ˆ๋‹ค....

 

 

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

def solution():
    n = int(input())
    food = list(map(int,input().split()))

    d= [0]*100
    d[0] = food[0]
    d[1] = max(food[0],food[1])
    for i in range(2,n):
        d[i] = max(d[i-1],d[i-2]+food[i])
    return d[n-1]

print(solution())

 

 

๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๋ถ€๋ถ„์ ์ธ ํ’€์ด ๋ฐฉ๋ฒ•์„ ์ ํ™”์‹์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ์Šคํ‚ฌ์ด ํ•„์š”ํ•จ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

๋‚จ์€ ๊ฒƒ์€ ์ด๊ฒƒ์ด DP์ž„์„ ์•Œ์•„์ฐจ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

 

p.233 - ๋ฐ”๋‹ฅ๊ณต์‚ฌ

์ฒ˜์Œ ๊ฐ์ด ์•ˆ์žกํ˜€์„œ ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ•˜๋‹ฅ ์ ํ™”์‹์„ ๊ณ ๋ฏผํ–ˆ์„ ๋•Œ 

 

a[n] = a[n-1] + a[n-2]*3

a[n-1]  ์€ 1๊ฐœ์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ผ ์น˜๊ณ  

a[n-2] ๋Š” ์•„๋ž˜์™€๊ฐ™์ด 3๊ฒฝ์šฐ๋ผ๊ณ ์ƒ๊ฐํ–ˆ๋‹ค .

1X2  2๊ฐœ

2X1  2๊ฐœ

2X2 1๊ฐœ

 

๊ทธ๋Ÿฐ๋ฐ ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” 2๊ฐ€์ง€์˜€๋‹ค. 

a[n] = a[n-1] + a[n-2]*2

1X2  2๊ฐœ

2X2 1๊ฐœ

 

์ •๋ง ์•„๋ฆฌ์†กํ•ด์„œ ๊ณ„์† ์ƒ๊ฐํ•ด๋ณด๋‹ˆ,

2X1์ธ ๊ฒฝ์šฐ๋Š” a[n-2]์— ์†ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

n-2 ๋Š” ์ •ํ™•ํžˆ 2๊ฐœ๋ฅผ ๋‚จ๊ธด ๊ฒฝ์šฐ์—๋งŒ ์†ํ•˜๋Š” ๊ฑด๋ฐ 2X1์„ ํ•˜๋Š” ์ˆœ๊ฐ„ n-1์— ์†ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๋‹ค..

 

๋„ˆ๋ฌด ๋†€๋ผ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ธ๊ณ„๋‹ค.

๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋ฉด์„œ ๋””ํ…Œ์ผ์„ ์ฑ™๊ธฐ๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ๊ฐ์˜ค.

 

n = int(input())

d = [0]*1001
d[1] = 1
d[2]=3
for i in range(3,n+1):
    d[i] = (d[i-1]+d[i-2]*2)%796796
    print(d[i])

print(d[n])

๋Œ“๊ธ€