Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 클라이언트
- 버퍼
- lv0
- 프로그래머스 문자열 정렬
- index of
- 큐
- 프로그래머스 자바
- java
- StringTokenizer
- COS Pro
- Programmers
- Lv1
- lv2
- 프로그래머스
- 이진수 변환
- Queue
- 오름차순 정렬
- 스프링부트 도커 배포
- 프로그래머스 풀이
- 삼각형의 완성조건
- 스프링부트 도커
- 문자열
- 스프링부트 도커로 배포
- Stack
- 스택
- 백준 N과 M 자바
- SWEA
- 알고리즘
- 백준
- 자바
Archives
- Today
- Total
mun dev
[백준] 1735 분수합 자바(Java) 본문
문제설명
분수 A/B는 분자가 A, 분모가 B인 분수를 의미한다. A와 B는 모두 자연수라고 하자.
두 분수의 합 또한 분수로 표현할 수 있다. 두 분수가 주어졌을 때, 그 합을 기약분수의 형태로 구하는 프로그램을 작성하시오. 기약분수란 더 이상 약분되지 않는 분수를 의미한다.
입력
첫째 줄과 둘째 줄에, 각 분수의 분자와 분모를 뜻하는 두 개의 자연수가 순서대로 주어진다. 입력되는 네 자연수는 모두 30,000 이하이다.
출력
첫째 줄에 구하고자 하는 기약분수의 분자와 분모를 뜻하는 두 개의 자연수를 빈 칸을 사이에 두고 순서대로 출력한다.
통과한 코드 ✅
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(System.in);
int arr[][]=new int[2][2];
int num,den;
for(int i=0; i<2; i++){
for(int j=0; j<2; j++){
arr[i][j]=sc.nextInt();
}
}
if(arr[0][0]==arr[1][0]){
num=arr[0][0]+arr[1][0];
den=arr[0][0];
}else{
arr[0][0]=arr[0][0]*arr[1][1];
arr[1][0]=arr[1][0]*arr[0][1];
num=arr[0][0]+arr[1][0];
den=arr[0][1]*arr[1][1];
}
int mod=gcd(num,den);
num/=mod;
den/=mod;
System.out.println(num+" "+den);
}
// 유클리드 호제법
public static int gcd(int a, int b) {
// a가 b보다 큰 경우에 대해서 유클리드 호제법
if (a <= b) {
int temp = a;
a = b;
b = temp;
}
if (b == 0) {
return a;
}
return gcd(b , a % b);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 11866 요세푸스 문제0 자바(Java) (0) | 2023.06.23 |
---|---|
[백준] 18870 좌표압축 자바(Java) (0) | 2023.06.21 |
[백준] 11286 절댓값 힙 (0) | 2023.06.13 |
[백준] 1927 최소 힙 자바(Java) (0) | 2023.06.05 |
[백준] 11279 최대 힙 자바(Java) (0) | 2023.06.05 |