반응형
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <denum1, num1, denum2, num2 < 1,000
입출력 예
denum1 | num1 | denum2 | num2 | result |
1 | 2 | 3 | 4 | [5, 4] |
9 | 2 | 1 | 3 | [29, 6] |
소스코드
Solution.java
class Solution {
public int[] solution(int denum1, int num1, int denum2, int num2) {
int[] answer = new int[2];
answer[0]=denum1*num2+denum2*num1;
answer[1]=num1*num2;
int min = Math.min(answer[0],answer[1]);
int max = 1;
for(int i=1; i<=min; i++){
if(answer[0]%i==0 && answer[1]%i==0){
max= i;
}
}
answer[0] /= max;
answer[1] /= max;
return answer;
}
}
풀이
최대공약수를 구하여 for문을 이용해 계산해주면 된다. 사실 이 문제는 수학적으로 구할 줄 안다면 코드로 구현하는 것은 매우 쉽다. 위의 방법이 아니라도 수학적으로 구하는 방법은 여러 가지가 있을 것이다. 다른 클래스를 만들어 계산하는 방법도 있을 것이다.
한마디
코딩인가 수학인가,, 그것이 문제로다..
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr