๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 2436_๊ณต์•ฝ์ˆ˜

๋ฟŒ์•ผ._. 2024. 3. 7. 21:13

Gold V

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

< ๊ณต์•ฝ์ˆ˜ >

 

๋ฌธ์ œ ํ’€์ด 

 

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋Š” C, ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋Š”  CxDxE์ด๋‹ค.

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง€๊ณ  A์™€ B๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ด๋ฏ€๋กœ D์™€ E๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

D์™€ E๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋จผ์ € ( ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ / ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ )๋ฅผ ๊ตฌํ•˜๋ฉด DxE ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

D์™€ E๋Š” ( ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜/์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜) ์ด๋ฏ€๋กœ D์™€ E ์‚ฌ์ด์— ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๊ฐ€ 1์ด์–ด์•ผ ํ•œ๋‹ค. 

 

 

 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.StringTokenizer;

public class _2436_ { // ๊ณต์•ฝ์ˆ˜

	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 = new StringTokenizer(bf.readLine());

		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());

		int max = b / a;
		int result = Integer.MAX_VALUE;
		int num1 = 0, num2 = 0;

		for (int i = 1; i <= max; i++) {
			if (max % i == 0 && result > i + (max / i) && gcd(i, max / i) == 1) {
				result = i + (max / i);
				num1 = i;
				num2 = max / i;
			}
		}
		bw.write((num1 * a) + " " + (num2 * a));
		bw.flush();
	}

	private static int gcd(int i, int j) {
		if (j == 0) {
			return i;
		}
		return gcd(j, i % j);
	}
}
๋ณ€์ˆ˜)
a, b : ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
max : ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜/์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
result : ๋‘ ์ž์—ฐ์ˆ˜ ํ•ฉ ์ตœ์†Ÿ๊ฐ’
num1, num2 : ๋‘ ์ž์—ฐ์ˆ˜

 

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์œ„์—์„œ ๋งํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด D์™€ E๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด (์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜/์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜) ๊ฐ’์„ ๊ตฌํ•œ๋‹ค. ๊ณฑํ•ด์„œ (์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜/์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜)  ์ด ๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. ๊ตฌํ•œ ๋‘ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ์ด ์•ž์—์„œ ๊ตฌํ•œ ๊ฐ’๋ณด๋‹ค ์ž‘๊ณ  ๋‘ ์ž์—ฐ์ˆ˜์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๊ฐ’์ด 1์ด๋ผ๋ฉด result, num1, num2 ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค.

 

์ตœ์ข… ๋‘ ์ž์—ฐ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

gcd(Integer a, Integer b)

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

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