Today
Total
Recent Posts
Recent Comments
Archives
05-19 03:21
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
반응형
관리 메뉴

UD_park's IT story

[Programmers/Java] 분수의 덧셈 본문

Study/Programmers 코딩 테스트

[Programmers/Java] 분수의 덧셈

kingllzn 2023. 4. 6. 10:41
반응형
SMALL

프로그래머스의 입문 코딩테스트 문제인

"분수의 덧셈"에 대해 Java로 풀어본 리뷰를

시작해보도록 하겠습니다. 

 

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

문제 난이도 자체는 어렵지 않습니다만

다소 생각을 해야했던 부분이 바로

"코드의 간략화" 부분에 신경을 쓰다보니

다소 시간이 소요되었습니다.

 

그럼 먼저 풀이를 보며 설명을 이어가겠습니다.

 

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int numerator = (numer1 * denom2) + (numer2 * denom1); 
        int denominator = denom1 * denom2;
        for(int i = numerator-1; i > 1; i--) {
            if(numerator % i == 0 && denominator % i == 0) { 
                numerator /= i;
                denominator /= i;
            }
        }
        int[] answer = {numerator, denominator};
        return answer;
    }
}

위의 코드에서 사용된 문제 풀이의 개념은

분자를 각 상대의 분모를 곱한 값으로 더하고,

분모끼리 곱한 후 최소 공배수를 구하여

해당 최소 공배수로 약분을 한 값이 답이다.

라는 개념을 이용하여 코드를 작성하고

문제를 풀었습니다.

반응형

3, 4번 줄이 바로 분자와 분모에 연산을 진행하는 부분이고,

5번 줄의 for문이 바로 약분을 위해 최소 공배수 값을

연산된 분자값의 -1 씩 내려가며 공배수를 찾아

 

6번줄의 조건처럼 최소 공배수가 맞다면

7, 8번 줄처럼 결과의 분자와 분모에 약분을 합니다.

 

다음 포스팅에서는 C++과 Python을 통해

해당 문제를 풀어보도록 하겠습니다.

SMALL

그럼 프로그래머스/Java 숫자 비교하기

문제에 대한 포스팅을

여기서 마치도록 하겠습니다.

 

혹시 다른 것에 대해 궁금하신 게
있으시다거나 포스팅 요청은
댓글에 달아주시기 바랍니다.
 
아는 것이면 친절하고 쉽게,
모르는 것이면 또 제가 알아내서
친절하게 쉽게 포스팅하여
설명해드리도록 하겠습니다.

반응형
LIST
Comments