[프로그래머스] 분수의 덧셈 문제 풀이(코딩테스트 입문 Lv. 0) - 파이썬 python
              
          2022. 12. 8. 19:15ㆍ네카라쿠배 취준반 - 프로그래머스 문제 풀이
0. 자세한 설명은 YouTube 영상으로
1. 단순 gcd를 활용한 Solution
# ver1
def solution(denum1, num1, denum2, num2):
    # 1. 두 분수의 합 계산
    boonmo = num1 * num2
    boonja = denum1 * num2 + denum2 * num1
    
    # 2. 최대공약수 계산
    start = max(boonmo, boonja)
    gcd_value = 1
    
    for num in range(start, 0, -1):
        if boonmo % num == 0 and boonja % num == 0:
            gcd_value = num
            break
    
    # 3. gcd 로 나눈 값을 answer에 담기
    answer = [boonja / gcd_value, boonmo / gcd_value]
    return answer
2. 최적화된 gcd를 활용한 Solution
# ver2
def gcd(a, b):
    if a % b == 0:
        return b
    return gcd(b, a % b)
def solution(denum1, num1, denum2, num2):
    # 1. 두 분수의 합 계산
    boonmo = num1 * num2
    boonja = denum1 * num2 + denum2 * num1
    
    # 2. 최대공약수 계산
    gcd_value = gcd(boonmo, boonja)
    # 3. gcd 로 나눈 값을 answer에 담기
    answer = [boonja / gcd_value, boonmo / gcd_value]
    return answer
3. math library 를 활용한 Solution
# ver3
import math
def solution(denum1, num1, denum2, num2):
    # 1. 두 분수의 합 계산
    boonmo = num1 * num2
    boonja = denum1 * num2 + denum2 * num1
    
    # 2. 최대공약수 계산
    gcd_value = math.gcd(boonmo, boonja)
    
    # 3. gcd 로 나눈 값을 answer에 담기
    answer = [boonja / gcd_value, boonmo / gcd_value]
    return answer4. YouTube 영상에 자세한 내용을 정리했으니 참고하세요
'네카라쿠배 취준반 - 프로그래머스 문제 풀이' 카테고리의 다른 글
| [프로그래머스] 콜라 문제 풀이(코딩테스트 입문 Lv. 1) - 파이썬 python (0) | 2022.12.15 | 
|---|---|
| [프로그래머스] 겹치는 선분의 길이 문제 풀이(코딩테스트 입문 Lv. 0) - 자바 Java (0) | 2022.12.10 | 
| [프로그래머스] 타겟넘버 문제 풀이(DFS BFS 재귀함수 Lv. 2) - java 자바 (0) | 2022.03.30 | 
| [백준 1018] 체스판 다시 칠하기 (완전탐색) - java 자바 (0) | 2022.03.07 | 
| [2021 카카오 코딩테스트] 키패드 누르기 - 자바 java (4) | 2022.01.21 | 
