문제 출처 - Baekjoon Online Judge
문제는 여기
[문제]
대열이는 욱제의 친구다.
- “야 백대열을 약분하면 뭔지 알아?”
- “??”
- “십대일이야~ 하하!”
n:m이 주어진다. 욱제를 도와주자. (...)
[입력]
n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000)
[출력]
두 수를 최대한으로 약분하여 출력한다.
[풀이]
1. ":"을 기준으로 숫자들이 입력되기 때문에 split을 사용해 ":"을 기준으로 나눠준다.
2. 최대 공약수인 gcd를 구해서 이로 나누어 결과를 출력해준다.
[접근]
1. 두 수를 최대한으로 약분하여 출력한다는 뜻은 최대공약수를 구해 이로 나눠준 것을 뜻하기 때문에 최대 공약수를 구해준다.
[코드]
package BOJ_silver;
import java.io.*;
import java.util.*;
public class Main_S4_14490 {
static int n;
static int m;
static String[] splited;
static int gcd;
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// A:B로 입력이 들어오기 때문에 :을 기준으로 split을 해 나눠준다.
splited = br.readLine().split(":");
// 나눠진 것을 기준을 앞을 n 뒤를 m으로 넣어준다. (그냥은 문자열이니까 Integer.parseInt를 사용)
n = Integer.parseInt(splited[0]);
m = Integer.parseInt(splited[1]);
// 최대공약수를 구해준다.
gcd = gcd(Math.max(n, m), Math.min(n, m));
// 최대 공약수로 나눈 값을 결과값으로 출력한다.
System.out.println(n / gcd + ":" + m / gcd);
}
// 최대 공약수
static int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
}
'문제 풀이 > Baekjoon' 카테고리의 다른 글
[백준] S5 11507번 카드셋트 (JAVA) (0) | 2021.12.07 |
---|---|
[백준] S3 9996번 한국이 그리울 땐 서버에 접속하지 (JAVA) (0) | 2021.12.05 |
[백준] S5 5555번 반지 (JAVA) (0) | 2021.12.03 |
[백준] S5 1251번 단어 나누기 (JAVA) (0) | 2021.12.02 |
[백준] S4 6219번 소수의 자격 (JAVA) (0) | 2021.12.01 |