Coding Test/프로그래머스 - JAVA

프로그래머스 JAVA Lv.0. 분수의 덧셈

6uiw 2024. 11. 29. 19:07

📌문제


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

 

 

 

 

 

📌답

 


 

idea) 기약분수를 생각하지 말고 일단 분모를 서로 곱해서 계산한 뒤

결과값의 분자, 분모(numer3, denom3)의 최대공약수로 분자 분모를 나눠준다.

 

 

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = new int[2];
		int numer3=0;  //두 분수를 더한 결과의 분자
		int denom3=0;  //두 분수를 더한 결과의 분모
		int n=0;  //더한 결과의 분자 분모 중 더 작은 값을 n에 넣을 예정
		int m=1;  //더한 결과의 분자 분모의 최대공약수를 m에 넣을 예정
		int resultd=0; //최종 분자
		int resultn=0; //최종 분모
		denom3 = denom1*denom2; 
		numer3 = numer1*denom2 + numer2*denom1; 
		if(denom3-numer3<0) { //더한 결과에서 분자 분모 중 더 작은 값을 n에 넣겠다.
			n=denom3;			
		}
		else {n=numer3;}
	
		for(int i=2;i<=n;i++) { //최대공약수 m 구하기
			if(numer3%i==0 && denom3%i==0)
			{m=i;}
		}			System.out.println(m);
		resultd=denom3/m;  //기약분수로 바꾼 분자(구하려는 답)
		resultn=numer3/m;  //기약분수로 바꾼 분모(구하려는 답)
        answer[0]=resultn;
        answer[1]=resultd;

        return answer;
    }
}

 

 

 

 

 

 


📢

1. 개발자 준비생이 공부한 내용을 정리한 글입니다. 내용에 오류가 있을 수 있습니다.
2. 위와 같은 이유로 내용에 대한 지적과 조언은 감사하게 받습니다.
3. 이 글의 내용은 계속 공부함으로써 언제든지 추가/수정 될 수 있습니다.