๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 2609 ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 12.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/2609

  • ๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
  • ์ฒซ์งธ ์ค„์—๋Š” ๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ๋‘˜์€ 10,000์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ด๋ฉฐ ์‚ฌ์ด์— ํ•œ ์นธ์˜ ๊ณต๋ฐฑ์ด ์ฃผ์–ด์ง„๋‹ค.
  • ์ฒซ์งธ ์ค„์—๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ, ๋‘˜์งธ ์ค„์—๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋‘ ์ˆ˜์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ˆซ์ž๋ฅผ ์ผ์ผ์ด ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ• ๋ ค๊ณ  ํ•˜๋‹ค๊ฐ€ ๊ณต์‹์ด ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฌธ์ œํ’€๊ธฐ ์ „์— ๋จผ์ € ์ฐพ์•„๋ดค์—ˆ๋‹ค.
  • ๊ทธ ๋ฐฉ๋ฒ•์€ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์ธ๋ฐ ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์ด๋ž€ a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ r๋กœ b๋ฅผ ๋‚˜๋ˆด์„๋•Œ ๋‚˜์˜จ ๋‚˜๋จธ์ง€ r'์ด 0์ด๋ฉด ๊ทธ r์ด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ผ๋Š” ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ 0์œผ๋กœ ๋–จ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด a ์ž๋ฆฌ์— b๋ฅผ ๋„ฃ๊ณ  b์ž๋ฆฌ์— r์„ ๋„ฃ๊ณ  ์œ„์— ๋ฐฉ๋ฒ•์„ ๋ฐ˜๋ณตํ•˜์—ฌ 0์ด ๋ ๋•Œ๊นŒ์ง€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค. 
  • ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋Š” ๋‚˜์˜จ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ '(a * b) / ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜' ์ด ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.  

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์ด ์ •ํ™•ํžˆ ์ƒ๊ฐ์ด ๋‚˜์ง€ ์•Š์•„์„œ ์ด๋ก ์„ ์ฐพ์•„๋ณด๋ฉด์„œ ๊ณต๋ถ€ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. (์•ž์œผ๋กœ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋‚˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ์ด ๋ฐฉ๋ฒ•์„ ๊ผญ ์ˆ™์ง€ํ•ด์„œ ์ˆ˜์›”ํžˆ ํ’€์–ด์•ผ๊ฒ ๋‹ค..!)

ํŒŒ์ดํŒ…!!

์ฝ”๋“œ

import java.io.*;
import java.util.*;

// ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•
// a,b์— ๋Œ€ํ•ด์„œ a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ r์ด๋ผ ํ•œ๋‹ค๋ฉด a,b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ b,r์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” ๊ฐ™๋‹ค.
// ๋”ฐ๋ผ์„œ a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ r์„ ๊ตฌํ•˜๊ณ , b๋ฅผ r๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€ r'์„ ๊ตฌํ•œ๋‹ค.
// ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋ ๋•Œ ๋‚˜๋ˆˆ ์ˆ˜๊ฐ€ a,b์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋œ๋‹ค.
// ํ•ด๋‹น ๋ฐฉ๋ฒ•์œผ๋กœ ๊ตฌํ•œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋Š” (a * b)/์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ์‹์œผ๋กœ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

public class BOJ2609 {

    static int gcd = 0;

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        // ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์™€ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ๋‘ ์ˆ˜
        int N1 = Integer.parseInt(st.nextToken());
        int N2 = Integer.parseInt(st.nextToken());

        GCD(N1, N2);

        // ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ์‹์„ ํ™œ์šฉํ•œ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๋Š” ์‹
        int lcm = (N1 * N2) / gcd;

        System.out.println(gcd);
        System.out.println(lcm);
    }

    // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•  ํ•จ์ˆ˜
    public static void GCD(int n1, int n2){
        // n1์ด n2๋กœ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค๋ฉด n2๊ฐ€ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์ด๋ฏ€๋กœ
        // ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” n2๊ณ  ํ•จ์ˆ˜ ์ข…๋ฃŒ
        if(n1 % n2 == 0){
            gcd = n2;
            return;
        }

        // ๋งŒ์•ฝ ๋‚˜๋ˆ„์–ด๋–จ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์„ ์ด์šฉํ•ด์„œ n2์™€ n1์„ n2๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋กœ
        // ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ๋Œ๋ฆผ
        GCD(n2, n1 % n2);
    }
}