PS/BaekJoon

2609 JAVA ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

chaerlo127 2022. 8. 26. 01:26
728x90

 

ํ•™๊ต 1์ฃผ์ฐจ ์ˆ˜์—…์‹œ๊ฐ„์—์„œ ๋ฐฐ์› ๋˜ recursion์— ๊ด€ํ•œ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ œ์ด๋‹ค. while๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์žฌ๊ท€๋ฅผ ๋ณต์Šตํ•˜๊ธฐ ์œ„ํ•ด์„œ recursion์„ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณธ๋‹ค.

 

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ : ๋‘ ์ž์—ฐ์ˆ˜์˜ ์ตœ๋Œ€์˜ ์•ฝ์ˆ˜, ๋‚˜๋ˆˆ ์ˆ˜ ์ค‘์—์„œ ๋‘ ์ˆ˜๊ฐ€ ๊ณตํ†ต์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ตœ๋Œ€์˜ ๊ณตํ†ต ์ž์—ฐ์ˆ˜๋ฅผ ์ผ์ปซ๋Š”๋‹ค.

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ : ๋‘ ์ž์—ฐ์ˆ˜์˜ ์ตœ์†Œ์˜ ๋ฐฐ์ˆ˜, ๋‘ ์ˆ˜์˜ ๋ฐฐ์ˆ˜ ์ค‘์—์„œ ๊ณตํ†ต์ ์ด๋ฉด์„œ ์ตœ์†Œ์˜ ์ž์—ฐ์ˆ˜๋ฅผ ์ผ์ปซ๋Š”๋‹ค.

 

์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋Š” ๋‘ ์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฒƒ ์ค‘์—์„œ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๋‚˜๋ˆ„๋ฉด ๊ฐ’์ด ๋‚˜์˜จ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์ด ๋ฌธ์ œ์—์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋Š” ๋‘ ์ˆ˜๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฐ’์ด 0์ด ๋˜๊ธฐ ์ด์ „๊นŒ์ง€ ๊ณ„์‚ฐํ•˜์—ฌ ๊ทธ ๋•Œ์˜ ๋ชซ์„ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋กœ ์ •ํ•œ๋‹ค. 

 

์ฆ‰, ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•˜๋ฉด 

// ์‹œ๊ฐ„ ๋ณต์žก๋„ O(n) -> ์˜ค๋ž˜๊ฑธ๋ฆผ
while(b!=0){
	int r = a%b; // a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๊ฐ’
    
    r = b; // r์€ b ์œ„์น˜๋กœ
    b = a; // b๋Š” a ์œ„์น˜๋กœ
}

 

์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ปค์ง€๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ์žฌ๊ท€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	public static int GCD(int a, int b) {
		if(b == 0) return a; // while ๋ฌธ ์ฒ˜๋Ÿผ b๊ฐ€ 0์ด๋ฉด ๋ชซ์„ return
		return GCD(b, a%b); // ์•„๋‹ˆ๋ฉด ์ด๋ฅผ ๊ณ„์†ํ•ด๋ผ
	}
    
	public static int LCM(int a, int b, int gcd) {
		return (a*b)/gcd;
	}
    
	public static void main(String[] args) {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		try {
			st = new StringTokenizer(bf.readLine(), " ");
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			
			int gcd = GCD(a, b);
			int lcm = LCM(a, b, gcd);
			System.out.println(gcd);
			System.out.println(lcm);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
728x90