[프로그래머스/java/Lv.0] 분수의 덧셈 (유클리드 호제법)

2024. 9. 29. 14:04·코테/프로그래머스 JAVA Lv.0

 

 

 

* 문제 풀이

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int[] answer = new int[2]; //배열 크기 2. 분자와 분모가 저장됨

        int num = denom1*denom2; //두 분모의 곱 저장
        int denom = numer1*denom2+numer2*denom1; //두 분수의 분자를 공통 분모로 맞추어 더한 값
        int max = 1; // 최대공약수는 1 이상의 자연수이기 때문에 초기값을 1로 설정

        for(int i=1; i<=num && i<= denom; i++){ // 최대공약수 찾기
            if(num%i==0 && denom%i==0){
                max = i; //max에 최대공약수가 저장됨
            }
        }
        answer[0]=denom/max; //분모
        answer[1]=num/max; //분자

        return answer;
    }
}

~>
기약분수 조건이 있어서 최소공배수를 구해야 한다.

 

* 풀이 참고 사이트
https://velog.io/@osohyun0224/프로그래머스-Lv.0-분수의-덧셈.java

 

 

※ 유클리드 호제법  (출처 위키백과)

2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나

두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘

** 자바 코드에서의 유클리드 호제법
public static int gcd(int p, int q)
 {
	if (q == 0) return p;
	return gcd(q, p%q);
 }

 

 

 

 

* 프로그래머스 다른 풀이

class Solution {
    public int[] solution(int denum1, int num1, int denum2, int num2) {
        int mother = num1 * num2;
        int son1 = num1 * denum2;
        int son2 = num2 * denum1;
        int totalSon = son1 + son2;
        for(int i = mother; i >= 1; i--){
            if(totalSon % i == 0 && mother % i == 0){
                totalSon /= i;
                mother /= i;
            }
        }
        int[] answer = {totalSon, mother};
        return answer;
    }
}

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글

[프로그래머스/java/Lv.0] 아이스 아메리카노  (0) 2024.10.16
[프로그래머스/java/Lv.0] n의 배수  (0) 2024.09.29
[프로그래머스/java/Lv.0] 짝수는 싫어요  (0) 2024.09.29
[프로그래머스/java/Lv.0] 특정 문자 제거하기  (0) 2024.09.27
[프로그래머스/java/Lv.0] 피자 나눠 먹기 (2)  (1) 2024.09.26
'코테/프로그래머스 JAVA Lv.0' 카테고리의 다른 글
  • [프로그래머스/java/Lv.0] 아이스 아메리카노
  • [프로그래머스/java/Lv.0] n의 배수
  • [프로그래머스/java/Lv.0] 짝수는 싫어요
  • [프로그래머스/java/Lv.0] 특정 문자 제거하기
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ORACLE에러
    Java
    코딩테스트_입문
    lombok
    업무자동화
    오라클에러
    코테
    에러
    부스트코스강의
    알고리즘
    데이터연동
    책첵개발일지
    CS50
    부스트코스
    springbot
    git명령어
    프로그래머스
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[프로그래머스/java/Lv.0] 분수의 덧셈 (유클리드 호제법)
상단으로

티스토리툴바