Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 7662
  • 백준 24039
  • 백준 1495
  • 백준 2343
  • 백준 1747
  • 백준 8892
  • 백준 2225
  • 백준 16926
  • 백준 1011
  • 백준 1064
  • 백준
  • 백준 3049
  • 백준 12605
  • 백준 10709
  • 백준 7567
  • 백준 2467
  • 백준 6550
  • 백준 1914
  • 백준 12871
  • Java
  • 백준 2591
  • 백준 15312
  • 백준 4659
  • 백준 14582
  • 백준 1531
  • 백준 3135
  • 백준 16194
  • 자바
  • 백준 15961
  • 백준 15655
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 1735 분수 합(Java)
백준

백준 1735 분수 합(Java)

2023. 2. 3. 17:13

https://www.acmicpc.net/problem/1735

 

1735번: 분수 합

첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.

www.acmicpc.net


 

해석 및 팁

 


 

이 문제는 최소공배수만 구할 수 있으면 쉽게 풀 수 있습니다. 유클리드 호제법에 따라 두수 a와 b가 주어졌을 때 최소공배수는 a * b / 최대공약수이므로 최대공약수를 구하면 됩니다. 최소공배수를 구했으면 두 분수의 분모를 최소공배수로 맞추어서 더해줍니다. 그다음 분자와 분모의 최대공약수를 구해서 나누어주면 되는 문제입니다.

 


 

Java 코드

 


import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);

    int a = sc.nextInt();
    int b = sc.nextInt();
    int c = sc.nextInt();
    int d = sc.nextInt();

    int down = b * d / gcd(b, d);
    int up = (a * (down / b) + c * (down / d));

    int n = gcd(down, up);

    down /= n;
    up /= n;
    
    System.out.println(up+" "+down);
  }

  static int gcd(int x, int y) {
    if(y == 0) return x;
    return gcd(y, x % y);
  }
  
}

'백준' 카테고리의 다른 글

백준 10973 이전 순열(Java)  (0) 2023.02.03
백준 17626 Four Squares(Java)  (0) 2023.02.03
백준 1449 수리공 항승(Java)  (0) 2023.02.03
백준 11478 서로 다른 부분 문자열의 개수(Java)  (0) 2023.02.03
백준 1935 후위 표기식2(Java)  (0) 2023.02.03
    '백준' 카테고리의 다른 글
    • 백준 10973 이전 순열(Java)
    • 백준 17626 Four Squares(Java)
    • 백준 1449 수리공 항승(Java)
    • 백준 11478 서로 다른 부분 문자열의 개수(Java)
    Park DJ
    Park DJ

    티스토리툴바