๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 9417_์ตœ๋Œ€ GCD

๋ฟŒ์•ผ._. 2024. 3. 6. 14:28

Silver IV

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/9417)

< ์ตœ๋Œ€ GCD >

 

๋ฌธ์ œ ํ’€์ด 

 

๋ชจ๋“  ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ์ฐพ์•„ ์ตœ๋Œ“๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class _9417_ { // ์ตœ๋Œ€ GCD

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;

		int m = Integer.parseInt(bf.readLine());

		ArrayList<Integer> list = new ArrayList<>();
		for (int i = 0; i < m; i++) {
			st = new StringTokenizer(bf.readLine());

			while (st.hasMoreTokens()) {
				list.add(Integer.parseInt(st.nextToken()));
			}

			int max = 0;
			for (int j = 0; j < list.size(); j++) {
				for (int k = j + 1; k < list.size(); k++) {
					int num = gcd(list.get(j), list.get(k));
					max = Math.max(num, max);
				}
			}
			bw.write(max + "\n");
			list.clear();
		}
		bw.flush();
	}

	private static Integer gcd(Integer a, Integer b) {
		if (b == 0) {
			return a;
		}
		return gcd(b, a % b);
	}
}
๋ณ€์ˆ˜)
m : ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜
list : ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆ˜
max : ๊ฐ€์žฅ ํฐ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜

 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ˆ˜๋งŒํผ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1) ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆ˜๋ฅผ ArrayList์— ์ €์žฅํ•œ๋‹ค.

2) ๋ชจ๋“  ๋‘ ์ˆ˜์˜ ์Œ์„ gcdํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.

3) ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.

4) ๊ฐ€์žฅ ํฐ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

gcd(Integer a, Integer b)

1) b๊ฐ€ 0์ด๋ฉด a๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

2) gcd(b, a% b)๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.