๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 2609 ์ต์ ๊ณต๋ฐฐ์์ ์ต๋ ๊ณต์ฝ์ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
ํด๊ฒฐ๋ฒ
์ด๋ฒ ๋ฌธ์ ๋ 2๊ฐ์ ์์ฐ์๋ฅผ GCD, LCM ์ฒ๋ฆฌํ๋ผ๋ ๋ฌธ์ ์ด๋ค.
GCD, LCM์ ์ฒ๋ฆฌํ๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ํตํด์ ๊ตฌํ๋ค๋ฉด O(N^2)์ ์๊ฐ ๋ณต์ก๋๊ฐ ์์๋๋ค.
ํ์ง๋ง ๋ฌธ์ ์์๋ ์๊ฐ ์ ํ๋ ๋๋ํ๊ณ n์ด 2๋ก ๊ณ ์ ๋์ด์๊ธฐ ๋๋ฌธ์ ์ด๋ค ๋ฐฉ๋ฒ์ ํตํด ํด๊ฒฐํด๋ ์ ํ์ด ๋์ง ์๋๋ค.
ํ์ง๋ง ๊ทธ๋๋ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ ์ ์ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํตํด์ O(log N)์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ณด์.
์ ๊ทผ๋ฒ
ํด๋น ๋ฌธ์ ๋ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋๋ค.
๋ง์ฝ ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ์์ง ๋ชปํ๋ค๋ฉด ์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํตํ ์ต๋ ๊ณต์ฝ์์ ์ต์ ๊ณต๋ฐฐ์์์ ํ์ตํ๋ ๊ฒ์ ์ ๊ทน ์ถ์ฒํ๋ค.
์ ํด๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ 2๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ๊ณ ์๊ฐ์ ๋ถ์ํด๋ณด์.
- ๋ฐ๋ณต๋ฌธ์ ํตํ ๊ตฌํ
- ์ฌ๊ทํธ์ถ์ ํตํ ๊ตฌํ
๋ฐ๋ณต๋ฌธ์ ํตํ ๊ตฌํ
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] ab = br.readLine().split(" ");
int a = Integer.parseInt(ab[0]);
int b = Integer.parseInt(ab[1]);
bw.write(gcdByLoop(a, b) + "\n" + lcm(a, b));
bw.flush();
bw.close();
}
private static int gcdByLoop(int a, int b) {
while(b > 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
private static int lcm(int a, int b) {
return (a * b) / gcdByLoop(a, b);
}
}
์ฌ๊ท ํธ์ถ์ ํตํ ๊ตฌํ
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] ab = br.readLine().split(" ");
int a = Integer.parseInt(ab[0]);
int b = Integer.parseInt(ab[1]);
bw.write(gcdByRecursive(a, b) + "\n" + lcm(a, b));
bw.flush();
bw.close();
}
private static int gcdByRecursive(int a, int b) {
if(b == 0) {
return a;
}
return gcdByRecursive(b, a % b);
}
private static int lcm(int a, int b) {
return (a * b) / gcdByRecursive(a, b);
}
}
๋ง์ฝ ์ฌ๊ท๋ก ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํ๋ค๋ฉด ๋ฉ๋ชจ์ด์ ์ด์ ์ ๊ณ ๋ คํ๋ ๊ฒ๋ ์ข์ ์ ๊ทผ์ธ ๊ฒ ๊ฐ๋ค.
๋๊ธ