Algorithm/Programmers

[Programmers] ν”Όλ³΄λ‚˜μΉ˜ 수

Earth Wave 2022. 4. 14. 01:53

 

 

문제 

 

ν”Όλ³΄λ‚˜μΉ˜ μˆ˜λŠ” F(0) = 0, F(1) = 1일 λ•Œ, 1 μ΄μƒμ˜ n에 λŒ€ν•˜μ—¬ F(n) = F(n-1) + F(n-2) κ°€ μ μš©λ˜λŠ” 수 μž…λ‹ˆλ‹€.

예λ₯Όλ“€μ–΄

  • F(2) = F(0) + F(1) = 0 + 1 = 1
  • F(3) = F(1) + F(2) = 1 + 1 = 2
  • F(4) = F(2) + F(3) = 1 + 2 = 3
  • F(5) = F(3) + F(4) = 2 + 3 = 5

와 같이 μ΄μ–΄μ§‘λ‹ˆλ‹€.

2 μ΄μƒμ˜ n이 μž…λ ₯λ˜μ—ˆμ„ λ•Œ, n번째 ν”Όλ³΄λ‚˜μΉ˜ 수λ₯Ό 1234567으둜 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό λ¦¬ν„΄ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄ μ£Όμ„Έμš”.

 

 

 

μ œν•œ 사항

 

  • n은 2 이상 100,000 μ΄ν•˜μΈ μžμ—°μˆ˜μž…λ‹ˆλ‹€.

 

 

ν•΄μ„€ μ½”λ“œ 
def solution(n):
    answer = []
    for i in range(n+1):
        if i == 0 or i == 1:
            answer.append(i)
        else:
            f = answer[i-2] + answer[i-1]
            answer.append(f%1234567)
    return answer[-1]
뢄석 > 이 문제λ₯Ό 톡해 ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ— λŒ€ν•œ κ°œλ…μ„ μž‘μ„ 수 μžˆμ—ˆλ‹€. μš°μ„  0λ²ˆμ§Έμ™€ 1λ²ˆμ§ΈλŠ” κ·œμΉ™μ— 상관없이 i 값이 κ·ΈλŒ€λ‘œ input λ˜λ―€λ‘œ λ”°λ‘œ 쑰건을 λΉΌμ„œ 적어주고 3번째 μˆ˜λΆ€ν„°λŠ” κ·œμΉ™μ— 따라 κ·Έ λ‹€μŒ μˆ˜κ°€ append 되기 λ•Œλ¬Έμ— κ·œμΉ™μ„ μ μ–΄μ„œ λ°˜λ³΅λ¬Έμ„ 돌렀주면 λœλ‹€. 

 

 

 

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - ν”Όλ³΄λ‚˜μΉ˜ 수

ν”Όλ³΄λ‚˜μΉ˜ μˆ˜λŠ” F(0) = 0, F(1) = 1일 λ•Œ, 1 μ΄μƒμ˜ n에 λŒ€ν•˜μ—¬ F(n) = F(n-1) + F(n-2) κ°€ μ μš©λ˜λŠ” 수 μž…λ‹ˆλ‹€. 예λ₯Όλ“€μ–΄ F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) =

programmers.co.kr