프로그래머스 0단계 분수의 덧셈 (Java 자바)

2024. 11. 7. 18:57·💻 코딩테스트/programmers
728x90

 

 

 

 

 

 

풀이

분수의 덧셈 과정을 코드로 변환하는 것과 같다. 조건이 기약분수일 경우 최대공약수를 구하는 것을 기억할 것. 분모와 분자 중 어떤 게 더 큰 값인지 알 수 없으므로 && 연산자를 사용하여 max 값을 찾는다. max를 찾으면 최대공약수를 업데이트 하고 약분을 한다. 그 값을 배열에 넣으면 끝. 원래는 맨 위에 있던 int[] answer = { }; 를 아래쪽으로 옮겼다.

 

1. 분수의 덧셈을 위해 통분한다. 통분 결과를 저장할 변수 numer, denom을 생성한다.

int numer = numer1 * denom2 + numer2 * denom1;
int denom = denom1 * denom2;

 

 

2. 최대공약수를 구한다

 for (int i=1; i<=numer && i<=denom; i++) {
            if (numer%i == 0 && denom%i == 0 ) {
                max = i; // 최대공약수 업데이트
            }
        }

 

 

3. 약분한다.

numer = numer/max;
denom = denom/max;

 

 

전체 코드

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        
        // 1. 분수의 덧셈을 위해 통분
        int numer = numer1 * denom2 + numer2 * denom1;
        int denom = denom1 * denom2;
        
        // 2. 조건이 기약분수 => 최대공약수로 약분
        // 분모와 분자 중 어떤 게 더 큰 값일지 알 수 없으므로
        int max = 1; // 최대공약수
        
        for (int i=1; i<=numer && i<=denom; i++) {
            if (numer%i == 0 && denom%i == 0 ) {
                max = i; // 최대공약수 업데이트
            }
        }
            
        // 3. 최대공약수를 구했으니 약분
        numer = numer/max;
        denom = denom/max;
        
        // 4. 분자와 분모를 순서대로 담은 배열
        int[] answer = {numer, denom};
        
        return answer;
    }
}

 

참고 https://tripleup.tistory.com/50

https://nahwasa.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EB%B6%84%EC%88%98%EC%9D%98-%EB%8D%A7%EC%85%88-Lv0-Java

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

'💻 코딩테스트 > programmers' 카테고리의 다른 글

프로그래머스 0단계 순서쌍의 개수 (Java 자바)  (1) 2025.01.08
프로그래머스 0단계 제곱수 판별하기 (Java 자바)  (0) 2025.01.08
프로그래머스 0단계 양꼬치 (Java 자바)  (0) 2024.11.07
프로그래머스 1단계 약수의 합 (Java 자바)  (0) 2024.11.07
프로그래머스 0단계 각도기 (Java 자바)  (0) 2024.11.06
'💻 코딩테스트/programmers' 카테고리의 다른 글
  • 프로그래머스 0단계 순서쌍의 개수 (Java 자바)
  • 프로그래머스 0단계 제곱수 판별하기 (Java 자바)
  • 프로그래머스 0단계 양꼬치 (Java 자바)
  • 프로그래머스 1단계 약수의 합 (Java 자바)
gxxg
gxxg
함께 일하고 싶은 개발자를 꿈꾸는 예비개발자의 공부 기록
  • gxxg
    공공
    gxxg
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • ☁️ 구름 x 카카오 Deep Dive 풀스택 (7)
        • html, css (1)
        • Java (3)
        • 스프링 MVC (0)
      • 💻 코딩테스트 (89)
        • 백준 (2)
        • programmers (87)
      • SQLD (1)
      • Language (3)
        • Java (2)
        • JavaScript (1)
      • Style Sheet (0)
        • CSS (0)
        • SCSS & SASS (0)
      • DBMS (2)
        • Oracle (2)
        • MySQL (0)
        • postgresql (0)
        • 데이터베이스 기초 이론 (0)
      • React (0)
      • SpringBoot (0)
      • JSP (2)
      • 알고리즘 (0)
      • 2023-02 몰입형 SW 정규 교육 (24)
        • 9월 프로젝트 (8)
      • 벽돌깨기 (4)
      • Etc (4)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    CSS
    programmers
    프로젝트 구조
    티스토리챌린지
    java
    DFS
    자바
    LV3
    Lv0
    코테
    코딩테스트
    junit 테스트
    이클립스
    톰캣
    2단계
    3단계
    Lv2
    eclipse
    POST
    0단계
    회원 관리 시스템
    HTML
    springboot
    오블완
    JSP
    spring
    구현체
    프로그래머스
    자바스크립트
    javascript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gxxg
프로그래머스 0단계 분수의 덧셈 (Java 자바)
상단으로

티스토리툴바