본문 바로가기
코딩테스트-기록

[프로그래머스] 분수의 덧셈 中 분자(numerator), 분모(denominator) 구하기

by SeongwooLee 2024. 1. 8.

 

생초보인 나 분수의 덧셈 공부하며...

 

수학적으로는 알지만, 코드로 구현할려하니 다시 초등학생으로 돌아간 기분... 이리 열공흔적 남긴다.

 

 

 

컴퓨터에서 분수를 표현할 때

 

컴퓨터에서는 슬래시 즉 빗금(/) 기호를 사용하여 입력한다. (이것은 나눗셈 기호이기도 하다.)


예시) 분수 ½ 은 "1/2" 로 표현 ("분자 나누기 분모" 의 형식)

 


 

▼ 1-1. 분수 더하기 ( 분모가 일치 할 시 )

// 1/4와 3/4를 더할 때 ▼
1/4 + 3/4 = (1 + 3) / 4 = 4/4 = 1

 

▼ 1-2. 분수 더하기 ( 분모가 일치 하지 않을 시 )

// 1/3와 1/5를 더할 때 ▼
3과 5의 최소공배수를 구해서 분모를 일치하게 만들기

▶ 최소공배수 LCM(largest common multiple) 구하는 법
// 두 수의 분모 곱하기 3 * 5 = 15(최소공배수)
 1/3 + 1/5 = (1 * 5)/(3 * 5) + (1 * 3)/(5 * 3) = 5/15 + 3/15 = 8/15

▶ 계산과정
// 3, 5 분모를 15로 맞춰주기 위해 각 분수의 분자를 곱함
1/3: 1 * (5/5) = 5/15
1/5: 1 * (3/3) = 3/15
// 두 분수를 더함
5/15 + 3/15 = 8/15
1/3 + 1/5 = 8/15

 

 

▼ 최대공약수 GCD(greatest common divisor) 구하는 법 유클리드 호제법 사용

// 큰 수를 작은 수로 나눈 나머지를 구하기 (5 % 3 = 2)
// 나머지가 0이 아니라면 될때까지, 나머지를 작은 수로 대체해서 과정 반복 (3 % 2 = 1)
// 결국 나머지가 0이 되었을 때 작은 수가 최대공약수 (2 % 1 = 0)
// 작은 수 였던 1이 최대공약수로 5와 3의 최대공약수는 1