def solution(n):
    
    if n < 3:
        return n
    
    dp = [0] * (n + 1)
    dp[1], dp[2] = 1, 2
    
    for i in range(3, n + 1):
        dp[i] = dp[i - 1] + dp[i - 2]
        
    return dp[n] % 1234567

나의 풀이

def solution(n,a,b):
    answer = 0
    while a != b:
        answer += 1
        a, b = (a + 1) // 2, (b + 1) // 2
    return answer

 

다른 풀이

def solution(n):
	return bin(n).count(1)

나의 답안 - 시간 초과

def solution(n,a,b):
    answer = 1
    data = [i for i in range(1, n + 1)]
    
    while True:
        tmp = []
        
        for i in range(0, len(data), 2):
            if data[i] == a and data[i + 1] == b:
                return answer
            if data[i] in [a, b]:
                tmp.append(data[i])
            elif data[i + 1] in [a, b]:
                tmp.append(data[i + 1])
            else:
                tmp.append(-1)
                
        data = tmp
        answer += 1

 

답안 예시

def solution(n,a,b):
    answer = 0
    while a != b:
        answer += 1
        a, b = (a + 1) // 2, (b + 1) // 2
    return answer

 

나의 코드

from math import gcd

def solution(arr):
    answer = arr[0]
    for i in arr:
        answer = answer * i // gcd(answer, i)
    return answer

 

gcd 함수는 일반적으로 사용 가능하나

최소공배수 lcm 함수는 파이썬 3.9 이상 버전에서만 지원하기에 코딩테스트를 보는 환경에 따라 다를 수 있음을 확인하여야 한다.

 

3.9 미만 버전에서 lcm을 구하려면 gcd 공식을 활용하여 함수로 풀이하자.

 

- a * b = GCD * LCM

- LCM = a * b / gcd

+ Recent posts