728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120808

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

 

 

풀이)

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        
        int[] answer = new int[2];
        
        int denom = denom1*denom2;
        int numer = numer1*denom2 + numer2*denom1;
        int cnt = 1; //초기의 최대공배수 값 지정
        
        //1부텨 분자 denom1과 denom2의 곱까지의 최대공약수를 구하위한 반복문
        for(int i=1; i<=denom; i++){
            if(denom%i==0 && numer%i==0){
                cnt=i;
            }
        }
        
         answer[0] = numer/cnt;
         answer[1] = denom/cnt;
        
        return answer;
        
       
    }
}

이 문제 상당히 어려웠다...ㅜㅜ😭

denom1==denom2을때, 뭐 이런식으로 조건문을 엄청 많이 적용했더니 몇개는 맞고, 몇개는 틀리는 결과가 나왔다 그래서 초기화 시키고 다시 처음부터 풀어 원하는 답에 도달 할 수 있었다.

728x90