05-16 05:32
Recent Posts
Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

miinsun

[Algorithm]์ž๋ฐ”_GCD์™€ LCM ๊ตฌํ•˜๊ธฐ :: ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ๋ณธ๋ฌธ

Algorithm/Java

[Algorithm]์ž๋ฐ”_GCD์™€ LCM ๊ตฌํ•˜๊ธฐ :: ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

miinsun 2022. 5. 21. 20:08

 

๐Ÿ’ฌ ๋ฌธ์ œ ์„ค๋ช…

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ.

๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œํ‚จ๋‹ค.
1. ์ˆซ์ž๋ฅผ ์ฐจ๋ก€๋กœ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.
2. ์ˆซ์ž ์ง‘ํ•ฉ์˜ ๊ฐ€์žฅ ํฐ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
3. ์ˆซ์ž ์ง‘ํ•ฉ์˜ ๊ฐ€์žฅ ์ž‘์€ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

๋งŒ์•ฝ ์ž…๋ ฅ ๋œ ์ˆซ์ž๊ฐ€ 0์ด๋ฉด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•œ๋‹ค.

 

๐Ÿšซ ์ œํ•œ ์‚ฌํ•ญ

  • n์€ 1,000,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ์ž…๋‹ˆ๋‹ค

 

๐Ÿ”จ ์ž…์ถœ๋ ฅ ์˜ˆ

์ž…๋ ฅ - ์ˆซ์ž ์ง‘ํ•ฉ์„ ์ž…๋ ฅํ•œ๋‹ค.

100, 200, 50, 800, 70, 45, 19

์ถœ๋ ฅ - ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์™€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ์ฐจ๋ก€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

957600 1

โ€‹

๐Ÿ’ป Solution.java

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์ด์šฉํ•ด ๋ฌธ์ œ๋ฅผ ํ’€์ดํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๋‹ค.

  • ๋จผ์ €, ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์ด์šฉํ•ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ 
  • ๋‘ ์ˆ˜๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ ์ดค๋Œ€ ๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ  ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.
import java.io.*;

public class Main {
	// ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜
	public static int findLCM(int a, int b) {
		if(b == 0) {
			return a;
		}
		return (a * b) / findGCD(a, b);
	}

	// ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜
	private static int findGCD(int a, int b) {
		if(b == 0) {
			return a;
		}
		return findGCD(b, a % b);
	}
	
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader( System.in));
		
		int prevL = 0, prevG = 0;
		String inputString = "";
		
		while(true) {
			System.out.print("Input : ");
			int num = Integer.parseInt(br.readLine());
			
			// ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์ด 0์ด๋ฉด ์ข…๋ฃŒ
			if(num == 0) break;

			// ๊ธฐ์กด์— ์ž…๋ ฅ ๋ฐ›์€ ์ •์ˆ˜๋“ค ์ถœ๋ ฅ
			StringBuilder sb = new StringBuilder();
			inputString += num;
			sb.append("Input Numbers : " + inputString).append('\n');
		
			// ๊ธฐ์กด์˜ ์ˆ˜์™€ ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์—์„œ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ
			int lcm = findLCM(num, prevL);
			sb.append("LCM : " + lcm).append('\n');

			// ๊ธฐ์กด์˜ ์ˆ˜์™€ ์ž…๋ ฅ ๋ฐ›์€ ๊ฐ’์—์„œ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๊ธฐ
			int gcd = findGCD(num, prevG);
			sb.append("GCD : " + gcd).append('\n');

			// lcm, gcd ์ถœ๋ ฅ
			System.out.println(sb);
			
			// ๊ธฐ์กด ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ ์ €์žฅ
			prevL = lcm;
			prevG = gcd;
			
			inputString += ",";
		}
	}
}

 

 

 

Comments