๐Ÿ“ฆ Changgo/[BOJ] ๋‹จ๊ณ„๋ณ„๋กœ ํ’€์–ด๋ณด๊ธฐ

[BOJ][C++] ๋ฐฑ์ค€ 1735๋ฒˆ: ๋ถ„์ˆ˜ ํ•ฉ (Silver III)

์„ ๋‹ฌ 2025. 1. 14. 19:01
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

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

์ž…๋ ฅ

์ฒซ์งธ ์ค„๊ณผ ๋‘˜์งธ ์ค„์—, ๊ฐ ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ๋˜๋Š” ๋„ค ์ž์—ฐ์ˆ˜๋Š” ๋ชจ๋‘ 30,000 ์ดํ•˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๊ตฌํ•˜๊ณ ์ž ํ•˜๋Š” ๊ธฐ์•ฝ๋ถ„์ˆ˜์˜ ๋ถ„์ž์™€ ๋ถ„๋ชจ๋ฅผ ๋œปํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์ž์—ฐ์ˆ˜๋ฅผ ๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

ํ’€์ด

// ํ’€์ด : https://whkakrkr.tistory.com

#include <iostream>
#include <vector>
#include <set>

using namespace std;

// ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜
int getGcp(int a, int b) {
    return a==0 ? b : getGcp(b%a, a);
}

// ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜
int getLcm(int a, int b) {
    int gcp = getGcp(a, b);
    return a*b/gcp;
}

// ์•ฝ๋ถ„
void getReduced(int &ja, int &mo) {
    int gcp = getGcp(ja, mo);
    ja /= gcp;
    mo /= gcp;
}

int main() {
    ios_base::sync_with_stdio(false);
	cout.tie(NULL);
	cin.tie(NULL);
	
	int a,b,c,d;
	cin >> a >> b >> c >> d;
	
    // (1) ๊ฐ ๋ถ„์ˆ˜ ์•ฝ๋ถ„ํ•˜๊ธฐ
	getReduced(a,b);
	getReduced(c,d);
	
    // (2) ํ†ต๋ถ„ํ•˜๊ธฐ
	int lcm = getLcm(b,d);
	a *= lcm/b;
	c *= lcm/d;
	
    // (3) ๋”ํ•˜๊ธฐ
	int ja = a+c;
	int mo = lcm;
    
    // (4) ๋”ํ•ด์„œ ๋‚˜์˜จ ๋ถ„์ˆ˜ ์•ฝ๋ถ„
	getReduced(ja, mo);
	
	cout << ja << " " << mo;
	
    return 0;
}
๋ฐ˜์‘ํ˜•