프로그래밍/프로그래머스
11/18 FRI 프로그래머스 분수의 덧셈
잠이안와
2022. 11. 18. 14:08
https://azu87.notion.site/11-22-11-18-3d597fc9002b46b2a2812cce2a78ca71
https://docs.google.com/spreadsheets/d/1BzoWwQawl0rQIknj3hoypvY5IZ0fw_ebH-dlQ08fVrg/htmlview#

계산과학 과제 급하게 하다가 꽃힌 프로그래머스..
백준은 컴파일 에러도 너무 많이 나고 좀 난해?해서 손이 잘 안갔는데 이건 코드만 단순히 쳐도 괜찮고 간단히 테스트케이스들을 돌려볼 수 있어서 너무너무 좋았다. 그러다가 살짝 난관에 봉착했던 문제이다.
최대공약수, 최소공배수를 사용해서 최대한 멍청하게 코드를 짜봤는데.... 조금 더 고민하면 코드를 줄일 수는 있을 것 같은데 귀찮아서 패스 ..... GCD, LCM 코드는 꽤 유용한 것 같으니 어떻게 짰었는지 대충은 머리속에 두자!!
object Solution {
def LCM(a:Int, b:Int):Int ={
if(b>a) LCM(b,a)
else{
def qwe(start:Int):Int ={
if(start == a*b) a*b
else {
if((start%a ==0) && (start%b==0)) start
else qwe(start+1)
}}
qwe(a)
}
}
def GCD(a:Int,b:Int):Int={
if(b>a) GCD(b,a)
else{
def qwe(start: Int): Int = {
if (start == 1) 1
else {
if ((a%start == 0) && (b % start == 0)) start
else qwe(start - 1)
}
}
qwe(b)
}}
def solution(denum1: Int, num1: Int, denum2: Int, num2: Int): Vector[Int] = {
val new_num:Int = LCM(num1,num2)
val new_denum:Int =denum1*(new_num/num1) + denum2*(new_num/num2)
val my_GCD:Int = GCD(new_denum,new_num)
if(my_GCD==1) Vector(new_denum,new_num)
else Vector(new_denum/my_GCD,new_num/my_GCD)
}
}