ยซ   2025/02   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
Recent Posts
02-02 00:31

Today
Total

Recent Comments
๊ด€๋ฆฌ ๋ฉ”๋‰ด

์—ฐ์˜ ๊ธฐ๋ก ๐Ÿช

[๋ฐฑ์ค€2609]-์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(C++)/์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• ๋ณธ๋ฌธ

Problem Solving/BOJ

[๋ฐฑ์ค€2609]-์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜(C++)/์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

kite707 2021. 7. 18. 15:14

https://www.acmicpc.net/problem/2609

 

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

์ฒซ์งธ ์ค„์—๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ, ๋‘˜์งธ ์ค„์—๋Š” ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋‘ ์ˆ˜์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•์˜ ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  1. ํฐ ์ˆซ์ž๋ฅผ ์ž‘์€ ์ˆซ์ž๋กœ mod์—ฐ์‚ฐ์„ ํ•œ๋‹ค.
  2. ์ž‘์€ ์ˆซ์ž๋ฅผ 1๋ฒˆ์—์„œ ๊ตฌํ•œ ๋‚˜๋จธ์ง€ mod์—ฐ์‚ฐ์„ ํ•œ๋‹ค.
  3. ์œ„ ๊ณผ์ •์„ mod์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ 0์ด ๋‚˜์˜ฌ๋•Œ ๊นŒ์ง€ ๊ณ„์† ๋ฐ˜๋ณตํ•œ๋‹ค.
  4. ์ด๋•Œ ๋‚˜๋ˆ„๋Š” ์ˆ˜๋กœ ์‚ฌ์šฉ๋œ ์ˆ˜๊ฐ€ ๋‘ ์ˆ˜์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ ๋œ๋‹ค.

์œ„ ๊ณผ์ •์„ ์ด์šฉํ•ด์„œ 1428๊ณผ 833์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด๋„๋ก ํ•˜์ž.

mod์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ 0์ด ๋ ๋•Œ ๋‚˜๋ˆ„๋Š” ์ˆ˜๋Š” 119์˜€์œผ๋‹ˆ 1428๊ณผ 833์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” 119์ด๋‹ค. ์ด๋ฅผ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

int gcd(int a, int b) {
	int c = a % b;
	while (c != 0) {
		a = b;
		b = c;
		c = a % b;
	}
	return b;
}

 

์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ

 

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ธฐ๋ฅผ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๊ฐ„๋‹จํ•˜๋‹ค. ์ˆ˜ํ•™์ ์œผ๋กœ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜์˜ ๊ณฑ์€ ๋‘ ์ˆ˜์˜ ๊ณฑ๊ณผ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜*์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ = ๋‘ ์ˆ˜์˜ ๊ณฑ

์ฆ‰ ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

int lcm(int a, int b) {
	return (a * b) / gcd(a, b);
}

์ „์ฒด ์ฝ”๋“œ

 

์œ„์—์„œ ๋ฌธ์ œ๊ฐ€ ์š”๊ตฌํ•œ๋Œ€๋กœ ๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

#include <iostream>
using namespace std;

int gcd(int a, int b) {
	int c = a % b;
	while (c != 0) {
		a = b;
		b = c;
		c = a % b;
	}
	return b;
}

int lcm(int a, int b) {
	return (a * b) / gcd(a, b);
}

int main() {
	int n1, n2;
	cin >> n1 >> n2;
	cout << gcd(n1, n2) << "\n" << lcm(n1, n2);
}