기몽수
코딩 기록일지
기몽수
전체 방문자
오늘
어제
  • 분류 전체보기 (443)
    • 알고리즘 - SWEA (210)
      • D1 (19)
      • D2 (25)
      • D3 (143)
      • D4 (21)
      • D5 (2)
    • 알고리즘 - Programmers (74)
      • Unrated (34)
      • Lv 0 (4)
      • Lv 1 (3)
      • Lv 2 (32)
      • Lv 3 (1)
    • 알고리즘 - Baekjoon (158)
      • Bronze (1)
      • Silver (65)
      • Gold (90)
      • Platinum (2)
    • 취업 (0)
    • SSAFY (1)
hELLO · Designed By 김용수.
기몽수

코딩 기록일지

알고리즘 - Programmers/Unrated

[level unrated] 분수의 덧셈

2023. 10. 12. 15:38

문제 링크

성능 요약

메모리: 80.3 MB, 시간: 0.42 ms

구분

코딩테스트 연습 > 코딩테스트 입문

채점결과

정확성: 100.0
합계: 100.0 / 100.0

제출 일자

2023년 10월 4일 15:36:30

문제 설명

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


제한사항
  • 0 <numer1, denom1, numer2, denom2 < 1,000

입출력 예
numer1 denom1 numer2 denom2 result
1 2 3 4 [5, 4]
9 2 1 3 [29, 6]

입출력 예 설명

입출력 예 #1

  • 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.

입출력 예 #2

  • 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.

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

 

class Solution {
    class Fractional{
        private int numerator;
        private int denominator;

        public Fractional(int numerator, int denominator){
            this.numerator = numerator;
            this.denominator = denominator;
            normalization();
        }
        public int getNumerator(){
            return numerator;
        }
        
        public int getDenominator(){
            return denominator;
        }
        
        public Fractional add(Fractional other){
            return new Fractional(this.numerator * other.getDenominator() + other.getNumerator() * this.denominator
                                  , this.denominator * other.getDenominator());
        }
        
        private void normalization(){
            int value = GCD();
            numerator /= value;
            denominator /= value;
        }
        
        private int GCD(){
            int min = Math.min(numerator,denominator);
            int max = Math.max(numerator,denominator);
            while(min != 0){
                int tmp = min;
                min = max % min;
                max = tmp;
            }
            
            return max;
        }
    }
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        Fractional a = new Fractional(numer1, denom1);
        Fractional b = new Fractional(numer2, denom2);
        
        Fractional c = a.add(b);
        return new int[] {c.getNumerator(), c.getDenominator()};
        
    }
}

'알고리즘 - Programmers > Unrated' 카테고리의 다른 글

[프로그래머스] [이차원 배열 대각선 순회하기] : unrated 자바(Java)  (0) 2023.11.11
[level unrated] 날짜 비교하기 - JAVA[자바]  (0) 2023.10.13
[level unrated] 세로 읽기  (0) 2023.10.12
[level unrated] 9로 나눈 나머지  (1) 2023.10.10
[level unrated] 주사위 게임 2  (0) 2023.10.10
    '알고리즘 - Programmers/Unrated' 카테고리의 다른 글
    • [프로그래머스] [이차원 배열 대각선 순회하기] : unrated 자바(Java)
    • [level unrated] 날짜 비교하기 - JAVA[자바]
    • [level unrated] 세로 읽기
    • [level unrated] 9로 나눈 나머지
    기몽수
    기몽수

    티스토리툴바