[BaekJoon 2609][๐ค1] ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์
โ ๋ฌธ์
๐ฏ ๋์ด๋
Bronze ๐ค1
๐ง ํ์ด
1. ๋ด ํ์ด (์ ํด๋ฆฌ๋ ํธ์ ๋ฒ)
- ์๊ณ ๋ฆฌ์ฆ
GCD,LCM,Euclidean algorithm
- ์ค๋ช
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ํ์ฉํด ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ์ฐพ๋ ๋ฐฉ์์ด๋ค.
์ฌ์ค ์ต๋๊ณต์ฝ์๋ฅผ ์ฐพ๋ ๊ฐ์ฅ ์ ๋ช
ํ๊ณ ์์ฃผ ์ฐ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์ผ๊ธฐ ๋๋ฌธ์ ๋ฑํ ํน๋ณํ ๊ฒ์ ์๋ค. ์ต๋๊ณต์ฝ์๋ฅผ ์ฐพ์ผ๋ฉด, ์ต์๊ณต๋ฐฐ์๋ ์ฝ๊ฒ ์ฐพ์ ์ ์๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฏ๋ก ์๊ฐ ๋ณต์ก๋๋ O(log N)์ด๋ค.
- ์ฝ๋
๋ด ํ์ด ์ฝ๋
#include <iostream>
using namespace std;
int GCD(int iNum1, int iNum2);
int LCM(int iNum1, int iNum2, int iGCD);
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int iMin{}, iMax{};
cin >> iMin >> iMax;
int iGCD{};
iGCD = GCD(iMin, iMax);
cout << iGCD << "\n" << LCM(iMin, iMax, iGCD);
return 0;
}
// ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ GCD ๊ตฌํ๊ธฐ
int GCD(int iNum1, int iNum2)
{
if(iNum2 == 0) return iNum1;
return GCD(iNum2, iNum1 % iNum2);
}
// LCM์ ๋ ์ซ์๋ฅผ ๊ณฑํ๊ณ GCD๋ก ๋๋ ์ฃผ๋ฉด ๋์จ๋ค
int LCM(int iNum1, int iNum2, int iGCD)
{
return iNum1 * iNum2 / iGCD;
}
๐ญ ํ๊ธฐ
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ต๋๊ณต์ฝ์, ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ผ ํ ๋ฒ ๋์ง์ด๋ณด๊ณ ์ ํฌ์คํ ์ ๋ง๋ค์๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ด๋ฐ ์ํฉ์์ ๋ง์ด ์ฐ์ด๊ธฐ๋ ํ๊ณ , ์๊ฐ ๋ณต์ก๋ ๋ํ ํผ๋ณด๋์น ์์ด ๊ฐ์ ์ต์
์ ๊ฒฝ์ฐ๋ง ์๋๋ผ๋ฉด O(log N)๋ฅผ ๋ณด์ฅํ๋ ์ ๊ธฐ์ตํด๋๋๋ก ํ์.
Comments