TIL(25.1.14)

채채·2025년 1월 14일

Today I Learned

목록 보기
56/75

오늘의 코드카타

https://school.programmers.co.kr/learn/courses/30/lessons/12914

  • 문제 접근
    1. 문제를 읽고, 처음엔 수식을 찾으려고 노트에 노가다로 경우의 수 찾기 시작함.
    2. 경우의 수를 쓰다보니 어떤 규칙이 있을 것 같았음. 예를 들어 5면 221 이렇게 할 수 있는데, 2는 이미 전에 나와있는 숫자임.
    3. 1, 2, 3, 5, 8,,, 쓰다보니 앞에 숫자 두 개 더하면 다음 숫자가 나오는 규칙 확인
    4. 이게 무슨 수열인지 궁금해서(문송합니다,,) 구글에 검색해보니 피보나치 수열이라고 함 !
    5. 피보나치 수열은 1 1 2 3 5 8 ,,, 로 나가는 것을 확인 하고 코드 구현

최종 완성된 코드

def solution(n):
    answer = 0
    r = [1, 1]
    for i in range(1, n) :
        r.append(r[i-1]+ r[i])  
    answer = r[n] % 1234567
    
    return answer

약간 문과생 + 초보적인 코드지만 구현되니 만족스러움...^^


이과생 + 잘하시는 조원분의 코드
so1_1은 재귀함수 사용 -> stack overflow 생김
sol_2은 피보나치수열을 사용한 풀이

# sol_1 (stack overflow)
def solution(n):
    if n == 1:
        return 1
    elif n == 2:
        return 2
    return (solution(n-1) + solution(n-2)) % 1234567
    
 # sol_2
 def solution(n):
    a, b = 1, 2
    if n == 1:
        return a
    elif n == 2:
        return b

    for i in range(3, n + 1):
        a, b = b, a + b
profile
화이팅

0개의 댓글