๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/๋ฐฑ์ค€

#1735

by flowing1ife 2023. 3. 17.
  • ๋ฌธ์ œ

๋ถ„์ˆ˜ A/B๋Š” ๋ถ„์ž๊ฐ€ A, ๋ถ„๋ชจ๊ฐ€ B์ธ ๋ถ„์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. A์™€ B๋Š” ๋ชจ๋‘ ์ž์—ฐ์ˆ˜๋ผ๊ณ  ํ•˜์ž.

๋‘ ๋ถ„์ˆ˜์˜ ํ•ฉ ๋˜ํ•œ ๋ถ„์ˆ˜๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‘ ๋ถ„์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ทธ ํ•ฉ์„ ๊ธฐ์•ฝ๋ถ„์ˆ˜์˜ ํ˜•ํƒœ๋กœ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๊ธฐ์•ฝ๋ถ„์ˆ˜๋ž€ ๋” ์ด์ƒ ์•ฝ๋ถ„๋˜์ง€ ์•Š๋Š” ๋ถ„์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

  • ์ฝ”๋“œ
#include <iostream>
#include <vector>

using namespace std;

int gcdIter(int a, int b) {//์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜
	while (b) {
		a %= b;
		swap(a, b);
	}
	return a;
}

vector<int> addFountain(vector<int>& n1, vector<int>& n2) {
	vector<int> result; //๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’
	int gcd;
	result.assign(2, 0);
	//๋ถ„๋ชจ์˜ ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜ ๊ตฌํ•˜๊ธฐ
	gcd = gcdIter(max(n1[1], n2[1]), min(n1[1], n2[1]));
	result[1] = n1[1] * n2[1] / gcd; //๊ณตํ†ต ๋ถ„๋ชจ ๊ตฌํ•˜๊ธฐ

	//๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•œ ๋ถ„์ˆ˜์˜ ๋ถ„์ž ๊ตฌํ•˜๊ธฐ
	n1[0] *= result[1] / n1[1];
	n2[0] *= result[1] / n2[1];
	result[0] = n1[0] + n2[0];

	//๊ธฐ์•ฝ ๋ถ„์ˆ˜์ธ์ง€ ํ™•์ธ 
	int i = gcdIter(max(result[0], result[1]), min(result[0], result[1]));
	if (i != 1) { //๊ธฐ์•ฝ ๋ถ„์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฉด
		result[0] /= i;
		result[1] /= i;
	}

	return result;
}

int main()
{
	vector<int> n1; // ์ฒซ๋ฒˆ์งธ ๋ถ„์ˆ˜
	vector<int> n2; // ๋‘๋ฒˆ์งธ ๋ถ„์ˆ˜
	vector<int> result; //๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•œ ๋ถ„์ˆ˜
	n1.assign(2, 0);
	n2.assign(2, 0);

	//์ž…๋ ฅ
	cin >> n1[0] >> n1[1];
	cin >> n2[0] >> n2[1];

	//์—ฐ์‚ฐ
	result = addFountain(n1, n2);
	
	//์ถœ๋ ฅ
	cout << result[0] << " " << result[1];

	return 0;

}
  • ํ•ด์„ค

1. gcdIter ํ•จ์ˆ˜ 

- ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

 

2. addFountain ํ•จ์ˆ˜

- ๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•˜๋Š” ํ•จ์ˆ˜

: gcdIter ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๊ฐ ๋ถ„์ˆ˜์˜ ๋ถ„์ž, ๋ถ„๋ชจ๋ฅผ ๋ฐ›์•„์˜จ ๋ฒกํ„ฐ n1 , n2์—์„œ ๋ถ„๋ชจ์˜ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•จ

: ๋‘ ๋ถ„๋ชจ์˜ ๊ณฑ์„ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด ์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜๋ฅผ ๊ตฌํ•ด ๊ณตํ†ต ๋ถ„๋ชจ๋ฅผ ๊ตฌํ•จ

: ๋‘ ๋ถ„์ˆ˜์˜ ๋ถ„์ž๋ฅผ ๊ณตํ†ต ๋ถ„๋ชจ์— ๋งž๋Š” ๋ถ„์ž๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ ์œ„ํ•ด ๊ณตํ†ต๋ถ„๋ชจ์— ๊ฐ ๋ถ„๋ชจ๋ฅผ ๋‚˜๋ˆˆ ๊ฐ’์„ ๋ถ„์ž์— ๊ณฑํ•ด์คŒ

: ๊ทธ๋ ‡๊ฒŒ ๊ตฌํ•œ ๋ถ„์ž๋ฅผ ๋”ํ•ด์„œ result์˜ ๋ถ„์ž ๊ฐ’์— ๋„ฃ์–ด์คŒ

: ๊ธฐ์•ฝ๋ถ„์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด result์˜ ๋ถ„๋ชจ์™€ ๋ถ„์ž์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•จ

: ๋งŒ์•ฝ ์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜๊ฐ€ 1์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ธฐ์•ฝ ๋ถ„์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ ๊ฐ ๋ถ„๋ชจ์™€ ๋ถ„์ž๋ฅผ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ„์–ด์ฃผ์–ด ๊ธฐ์•ฝ๋ถ„์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์คŒ

: result ๋ฒกํ„ฐ๋ฅผ return ํ•จ

 

3. main ํ•จ์ˆ˜

: ๋‘ ๋ถ„์ˆ˜๋ฅผ n1, n2 ์— ์ž…๋ ฅ ๋ฐ›๊ณ  addFountain ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ๋‘ ๋ถ„์ˆ˜๋ฅผ ๋”ํ•œ ๊ฐ’์„ result์— ์ €์žฅํ•จ

'์•Œ๊ณ ๋ฆฌ์ฆ˜ ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป > ๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

#6588  (1) 2023.03.17
#2840  (0) 2023.03.17
#10757  (0) 2023.03.05
#20126  (0) 2023.03.03
#1918  (0) 2023.03.03