[프로그래머스] 분수의 덧셈

2022. 11. 18. 01:05·Programming/알고리즘
728x90

1. 문제 

https://school.programmers.co.kr/learn/courses/30/lessons/120808?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.


2. Python code

math 함수 쓰면 금방 풀 수 있는데 그냥 최대공약수를 이용해서 푸는 걸로 먼저 풀었다.

def solution(denum1, num1, denum2, num2):
    answer = []
    num = denum1*num2 + denum2*num1 # 분자
    deno = num2*num1                # 분모

    gcd = 0
    # num과 deno의 최대공약수 구하기
    for j in range(min(num,deno), 0, -1):
        if num % j == 0 and deno % j ==0:
            gcd = j
            break
    
    answer = [num//gcd, deno//gcd]
    return answer

math 라이브러리 이용해서 푸는 법

import math

def solution(denum1, num1, denum2, num2):
    num = denum1 * num2 + denum2 * num1
    deno = num1 * num2
    gcd = math.gcd(num, deno)
    return [num//gcd, deno//gcd]

 

math 라이브러리 사용해서 하는게 훨씬 빠르다.

 

 

저작자표시 (새창열림)
'Programming/알고리즘' 카테고리의 다른 글
  • [프로그래머스] Lv 0 피자 나눠 먹기(2) - Python
  • [프로그래머스] Lv 1 기사단원의 무기 - Python
  • [프로그래머스] 햄버거 만들기
  • [프로그래머스] 피자 나눠 먹기 (1)
해치
해치
뭐라도 하자
  • 해치
    hi there
    해치
  • 글쓰기 관리자
  • 전체
    오늘
    어제
    • ALL (70)
      • Programming (62)
        • Python (14)
        • SQL (13)
        • 알고리즘 (35)
      • Framework (4)
        • Airflow (3)
        • Django (1)
      • Infra (3)
        • Docker (3)
        • Linux (0)
      • AWS (0)
      • Dashboard (1)
  • 블로그 메뉴

    • 링크

    • 인기 글

    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    해치
    [프로그래머스] 분수의 덧셈
    상단으로

    티스토리툴바