Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์นดํซ ๋ณธ๋ฌธ
๐ ๋ฌธ์
Leo๋ ์นดํซ์ ์ฌ๋ฌ ๊ฐ๋ค๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค์์๋ ๋ ธ๋์์ผ๋ก ์น ํด์ ธ ์๊ณ ํ ๋๋ฆฌ 1์ค์ ๊ฐ์์ผ๋ก ์น ํด์ ธ ์๋ ๊ฒฉ์ ๋ชจ์ ์นดํซ์ ๋ดค์ต๋๋ค.
Leo๋ ์ง์ผ๋ก ๋์์์ ์๊น ๋ณธ ์นดํซ์ ๋ ธ๋์๊ณผ ๊ฐ์์ผ๋ก ์์น ๋ ๊ฒฉ์์ ๊ฐ์๋ ๊ธฐ์ตํ์ง๋ง, ์ ์ฒด ์นดํซ์ ํฌ๊ธฐ๋ ๊ธฐ์ตํ์ง ๋ชปํ์ต๋๋ค.
Leo๊ฐ ๋ณธ ์นดํซ์์ ๊ฐ์ ๊ฒฉ์์ ์ brown, ๋ ธ๋์ ๊ฒฉ์์ ์ yellow๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์นดํซ์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ฐ์ ๊ฒฉ์์ ์ brown์ 8 ์ด์ 5,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๋ ธ๋์ ๊ฒฉ์์ ์ yellow๋ 1 ์ด์ 2,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์นดํซ์ ๊ฐ๋ก ๊ธธ์ด๋ ์ธ๋ก ๊ธธ์ด์ ๊ฐ๊ฑฐ๋, ์ธ๋ก ๊ธธ์ด๋ณด๋ค ๊น๋๋ค.
๐ก ์์ด๋์ด
'๊ฐ๋ก = ๋ ธ๋๊ฐ๋ก+2', '์ธ๋ก = (๊ฐ์ ์+๋ ธ๋์ ์)/๊ฐ๋ก' ์ด๋ค.
๋ ธ๋์์ ์ด๋ป๊ฒ ๋ฐฐ์นํ๋๋์ ๋ฐ๋ผ์ ์นดํซ์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ๊ฐ ๋ฌ๋ผ์ง๋ฏ๋ก ์ผ๋จ ๋ ธ๋์ ์ฝ์๋ฅผ ๊ตฌํ๋ค.
์ฝ์ ์ค์์ ๊ธด ๊ฒ ๋ถํฐ ํ๋์ฉ ๋ ธ๋์ ์ธ๋ก๋ก ๋๊ณ , ํ์ํ๋ค.
'๊ฐ๋ก * ์ธ๋ก = ๊ฐ์ ์ + ๋ ธ๋์ ์' ์ด๋ฏ๋ก ์ด ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ๋ก ์ธ๋ก๋ฅผ ์ฐพ๋๋ค.
โ๏ธ ํ์ด
function solution(brown, yellow) {
var answer = [];
let divY = [];
let X = 0;
let Y = 0;
for(let i=1; i<=Math.sqrt(yellow); i++){
// ์ฝ์ ์ฐพ๊ธฐ
if(yellow % i === 0) {
divY.push(i);
if(yellow / i != i) divY.push(yellow / i);
}
}
divY.sort((a, b) => b - a);
// ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ
for(let i=0; i<divY.length; i++){
// ์ฝ์ ์ค์์ ํ๋์ฉ ๋
ธ๋์ ๊ฐ๋ก, ์ธ๋ก๋ก ๋๊ณ ์ด ์นดํซ์ ๊ฐ๋ก ์ธ๋ก ๊ตฌํ๊ธฐ
X = divY[i] + 2;
if(X < brown && (brown + yellow) % X === 0){
Y = (brown + yellow) / X;
}
if(X * Y === brown + yellow) {
answer.push(X);
answer.push(Y);
break;
}
}
return answer;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ๋์งํ (0) | 2023.02.17 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ตฌ๋ช ๋ณดํธ (0) | 2023.02.17 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ฌ๋ฐ๋ฅธ ๊ดํธ (0) | 2023.02.09 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํน์ดํ ์ ๋ ฌ (0) | 2023.02.06 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ ์ฃผ์ ์ซ์ 3 (0) | 2023.02.06 |