๋ฌธ์ ์ค๋ช
๋ ์๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ ์์ ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฐํํ๋ ํจ์, solution์ ์์ฑํด ๋ณด์ธ์. ๋ฐฐ์ด์ ๋งจ ์์ ์ต๋๊ณต์ฝ์, ๊ทธ๋ค์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๋ฃ์ด ๋ฐํํ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋ ์ 3, 12์ ์ต๋๊ณต์ฝ์๋ 3, ์ต์๊ณต๋ฐฐ์๋ 12์ด๋ฏ๋ก solution(3, 12)๋ [3, 12]๋ฅผ ๋ฐํํด์ผ ํฉ๋๋ค.
์ ํ ์กฐ๊ฑด
- ๋ ์๋ 1์ด์ 1000000์ดํ์ ์์ฐ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
n | m | return |
3 | 12 | [ 3, 12 ] |
2 | 5 | [ 1, 10 ] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1 ์์ ์ค๋ช ๊ณผ ๊ฐ์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
์์ฐ์ 2์ 5์ ์ต๋๊ณต์ฝ์๋ 1, ์ต์๊ณต๋ฐฐ์๋ 10์ด๋ฏ๋ก [ 1, 10 ] ์ ๋ฆฌํดํด์ผํฉ๋๋ค.
< ๋์ ํ์ด >
function gcd(a, b) {
while( b !== 0){
let temp = b;
b = a % b;
a = temp;
}
return a;
}
function lcm(a, b) {
return (a * b) / gcd(a, b);
}
function solution(n, m) {
return [gcd(n,m), lcm(n,m)];
}
- gcd(a,b) : ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ ์์ ์ต๋๊ณต์ฝ์๋ฅผ ๊ตฌํ๋ ํจ์๋ก, ๋ ์๊ฐ ์ฃผ์ด์ง๋ฉด ๋๋จธ์ง๊ฐ 0์ด ๋ ๋๊น์ง ๋ฐ๋ณตํ์ฌ ์ต๋๊ณต์ฝ์๋ฅผ ์ฐพ๋๋ค.
- lcm(a,b) : ๋ ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ํจ์๋ก, ์ต์๊ณต๋ฐฐ์๋ ๋ ์์ ๊ณฑ์ ์ต๋๊ณต์ฝ์๋ก ๋๋ ๊ฐ์ผ๋ก ๊ตฌํ ์ ์๋ค.
- solution(n,m) : ์ฃผ์ด์ง ๋ ์ n, m์ ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํํ๋ ํจ์์ด๋ค.
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ๋ ์ a ์ b ์ ์ต๋๊ณต์ฝ์๋ a ๋ฅผ b๋ก ๋๋ ๋๋จธ์ง r๊ณผ b์ ์ต๋๊ณต์ฝ์์ ๊ฐ๋ค. ( gcd(a,b) = gcd(b,r) )
- ๋๋จธ์ง๊ฐ 0์ด ๋ ๋๊น์ง ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- ๋๋จธ์ง๊ฐ 0์ด ๋์์ ๋์ b ๊ฐ์ด ๋ ์ a์ b์ ์ต๋๊ณต์ฝ์์ด๋ค.
ex ) gcd(48,18) ๋ฅผ ๊ตฌํด๋ณด์.
- 48%18 = 12 ( r = 12 ) → gcd(48,18) = gcd(18,12)
- 18%12 = 6 ( r = 6 ) → gcd(18,12) = gcd(12,6)
- 12%6 = 0 ( r = 0 ) → gcd(12,6) = 6
- gcd(48,18) = 6
< ๋ค๋ฅธ ์ฌ๋์ ํ์ด >
function solution(a, b) {
var r;
for(var ab= a*b;r = a % b;a = b, b = r){}
return [b, ab/b];
}
r : ๋๋จธ์ง๋ฅผ ์ ์ฅํ๋ ๋ณ์
ab = a*b : ๋์ค์ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
r = a%b : r ์ด 0์ด ๋๋ฉด ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋๋ค.
'์๊ณ ๋ฆฌ์ฆ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Lv.0 ๋ถ์์ ๋ง์ (1) | 2024.07.25 |
---|---|
Lv.1 ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ (0) | 2024.07.21 |
Lv.1 ํฌ๊ธฐ๊ฐ ์์ ๋ถ๋ถ ๋ฌธ์์ด (0) | 2024.07.10 |
Lv.1 ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๊ธ์ (0) | 2024.07.07 |
Lv.1 x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์ (0) | 2024.07.03 |