본문 바로가기

코딩테스트

분수의 덧셈 JAVA 자바 프로그래머스 코딩테스트

분수의 덧셈 JAVA

 

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr

 

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

 

분수의 덧셈을 해본지 너무 오래라 개념부터 찾아보게됐다. 분수의 덧셈은 초등학교 5학년 과정에 있었다..  분모가 다른 덧셈과 뺄셈을 하려면 분모를 동일하게 해주면되고, 이것을 "통분"이라고 한다.

 

통분후에는 분모와 분자를 같은 수로 나눠줘야 하는데, 더이상 약분되지 않는 분수 즉, 분모와 분자의 공약수가 1뿐인 분수를 "기약분수"라고 한다. 기약분수 하는 법은 분모와 분자를 그들의 최대공약수로 나누면 된다.

 

음 그러니까.. 분모와 분자를 각각 같은 수(최대공약수)로 나눠서 1이 아닌 다른 수로 더 이상 나눠지지 않게 해주면 된다. 
       


class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        //기약분수 하는 법은 분모와 분자를 그들의 최대공약수로 나누면 됩니다.
        //즉, 분모와 분자를 각각 같은 수로 나눠서 1이 아닌 다른 수로 더 이상 나눠지지 않게. 
        
        // step1 : 두 분수를 더한 값을 기약 분수로
        // step2 : 분자와 분모를 순서대로 담은 배열 return
               
        int commonNumer1 = numer1 * denom2; //분자1
        int commonNumer2 = numer2 * denom1; //분자2
        int commonNumer = commonNumer1+commonNumer2; //분자의 덧셈
        int commonDen = denom1 * denom2; //통분
        
        int gcd = 0;
        
        //최대공약수 찾기
        for(int i=1; i <= commonNumer && i <= commonDen  ;i++){
            if( commonNumer%i == 0 && commonDen%i ==0 ){
                gcd = i;
            }
        }
        
        commonNumer = commonNumer/gcd; // 기약분수 분자
        commonDen = commonDen/gcd; // 기약분수 분모
        
        int[] answer = {commonNumer, commonDen};
        
        
        return answer;
    }
}

분수의 덧셈 개념 참고 : https://son50math.tistory.com/18

 

[초5 수학] 분모가 다른 분수의 덧셈과 뺄셈

📖 [초5] 분모가 다른 분수의 덧셈과 뺄셈 분모는 나눈 수 즉, 몇 등분인지를 의미하여 크기의 기준이 되기 때문에 분모가 다르다면 덧셈과 뺄셈을 할 수 없습니다. 즉, 분모를 동일하게 하면 여

son50math.tistory.com

 

기약분수 개념 참고 : https://schoolforkids.tistory.com/entry/%ED%95%9C%EA%B5%AD%EC%88%98%ED%95%99-%EA%B8%B0%EC%95%BD%EB%B6%84%EC%88%98-%EC%98%A4%EA%B0%9C%EB%85%90-%EC%95%BD%EB%B6%84

 

한국 5학년 수학 교과서-약분, 기약분수란? 기약분수 오개념 없이 지도하는 방법(feat. 옳지 않은

기약 분수는 분모와 분자의 공약수가 오로지 1밖에 없는 분수를 말합니다. 분모와 분자를 같은 수로 나누고, 나누다가 더 이상 약분이 안 되는 분수를 기약 분수라고 하지요. 한국 현행 교과서에

schoolforkids.tistory.com

 

분수의 덧셈 코드 참고 : https://tripleup.tistory.com/50

 

JAVA 프로그래머스 [분수의 덧셈] 자바 Lv.0

[프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 분수의 덧셈 https://school.programmers.co.kr/learn/courses/30/lessons/120808 해결 과정 모두가 알 듯, 분수의 덧셈은 통분을 통해 이루어진다. 두 분수의

tripleup.tistory.com

 

728x90
300x250