gcd

Sunmin Lee·2023년 2월 22일

Python

gcd 함수

: 주어진 두 숫자의 최대공약수를 구하는 함수

  • Python의 math 모듈에 포함되어있음
  • a,b의 최대공약수를 구하는 방법
import math # math 모듈

math.gcd(a,b) # gcd 최대공약수 함수
  • gcd 함수에 대한 코드
function gcd(max, min) {
  if (max % min === 0) return min;
  if (max % min !== 0) return gcd(min, max % min);
}

프로그래머스 Example

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

My Answer

import math

def solution(numer1, denom1, numer2, denom2):
    denom = denom1 * denom2
    numer = numer1 * denom2 + numer2 * denom1
    gcd = math.gcd(a,b) # a,b의 최대공약수
    
    if gcd == 1:
        answer = [numer, denom]
    else:
        answer = [numer/gcd, denom/gcd]
        
    return answer

/ : 나눔 연산자 (실수형)
// : 나눔 연산자 (정수형) , 몫

Develop Answer

import math

def solution(numer1, denom1, numer2, denom2):
    denom = denom1 * denom2
    numer = numer1 * denom2 + numer2 * denom1
    gcd = math.gcd(a,b) 
    
    answer = [numer//gcd, denom//gcd]
        
    return answer
  • 어차피 최대공약수가 1이면 나눠도 기약분수 그 자체이므로, if문 없이 그대로 몫 연산자로 진행해도 됨

불필요한 연산을 줄이고자 최대한 노력할것!

0개의 댓글