ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ์ค๋ช
Leo๋ ์นดํซ์ ์ฌ๋ฌ ๊ฐ๋ค๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค์์๋ ๋ ธ๋์์ผ๋ก ์น ํด์ ธ ์๊ณ ํ ๋๋ฆฌ 1์ค์ ๊ฐ์์ผ๋ก ์น ํด์ ธ ์๋ ๊ฒฉ์ ๋ชจ์ ์นดํซ์ ๋ดค์ต๋๋ค.

Leo๋ ์ง์ผ๋ก ๋์์์ ์๊น ๋ณธ ์นดํซ์ ๋ ธ๋์๊ณผ ๊ฐ์์ผ๋ก ์์น ๋ ๊ฒฉ์์ ๊ฐ์๋ ๊ธฐ์ตํ์ง๋ง, ์ ์ฒด ์นดํซ์ ํฌ๊ธฐ๋ ๊ธฐ์ตํ์ง ๋ชปํ์ต๋๋ค.
Leo๊ฐ ๋ณธ ์นดํซ์์ ๊ฐ์ ๊ฒฉ์์ ์ brown, ๋ ธ๋์ ๊ฒฉ์์ ์ yellow๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์นดํซ์ ๊ฐ๋ก, ์ธ๋ก ํฌ๊ธฐ๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ๊ฐ์ ๊ฒฉ์์ ์ brown์ 8 ์ด์ 5,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ๋ ธ๋์ ๊ฒฉ์์ ์ yellow๋ 1 ์ด์ 2,000,000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์นดํซ์ ๊ฐ๋ก ๊ธธ์ด๋ ์ธ๋ก ๊ธธ์ด์ ๊ฐ๊ฑฐ๋, ์ธ๋ก ๊ธธ์ด๋ณด๋ค ๊น๋๋ค.
์ ์ถ๋ ฅ ์
brownyellowreturn
10 | 2 | [4, 3] |
8 | 1 | [3, 3] |
24 | 24 | [8, 6] |
๋ฌธ์ ํ์ด
- ๋ ธ๋์๊ณผ ๊ฐ์์ ์ด ๊ฐฏ์์ ๋ชจ๋ ์ฝ์๋ฅผ ๊ตฌํ๋ค.
- ์ฃผ์ด์ง ์ฝ์์ ์์ธ width์ height๊ฐ์ ์ด์ฉํ์ฌ ์นดํซ ์ค์์ ๋ฐฐ์น๋ ์ ์๋์ง ๋น๊ตํ๋ค.
์ฝ๋
function solution(brown, yellow) {
var answer = [];
let size = brown + yellow; //์นดํซ์ ์ด ๊ฐฏ์
for (let i = 1; i <= size; i++) {
let width = i;
let height;
if (size % width !== 0) continue; // ์ฝ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ ๊ทธ ๋ค์ ์ํ
else height = size / width;
if (width < height) continue; // ๊ฐ๋ก๋ ์ธ๋ก๋ณด๋ค ํญ์ ๊น
let center = Math.floor(width / 2); // ํ์ฌ ์นดํซ์ ์ค์์ ์์น๋ ์ ์๋ ๊ฐ
let remain = yellow - center; // ์ค์์ ์์น๋ ์ ์๋ ๊ฐ์ ๋
ธ๋ ์นดํซ์ด ์ ์ฌ๋ ์ ์๋์ง ์๋ณ
if (remain < 0) continue; //๋
ธ๋ ์นดํซ์ ๊น ๊ณต๊ฐ์ด ์๋ ๊ฒฝ์ฐ
if (remain > 0) { //๋
ธ๋ ์นดํซ์ด ๋จ์ ์๋ ๊ฒฝ์ฐ
let total = center * height;
if(total === yellow) {
answer.push(width);
answer.push(height);
return answer;
} else continue;
}
if (remain === 0) { //๋ฑ ๋ง๋ ๊ฒฝ์ฐ
answer.push(width);
answer.push(height);
return answer;
}
}
}
์ค๋ต
์ฃผ์ด์ง ์์ ์ผ์ด์ค๋ ๋ชจ๋ ๋ค ๋ง์์ง๋ง ํ ์คํธ ์ผ์ด์ค๋ฅผ ๋๋ ธ์ ๋๋ ๋ช ๊ฐ์ ๊ฒฝ์ฐ๊ฐ ์ค๋ต์ผ๋ก ์ฒ๋ฆฌ๋์๋ค.
์ด์ ๋ฌธ์ ๋ฅผ ์ข ๋ ๊ฐ๋จํ๊ฒ ์๊ฐํด๋ณด๊ธฐ๋ก ํ๋ค.
์ฌ์ค ์ด ๋ฌธ์ ์์๋ ๊ฐ์์ ๊ฐฏ์๊ฐ ๋ช ๊ฐ์ธ์ง๋ ํฌ๊ฒ ์ค์ํ์ง ์๋ค.
๊ฐ์์ ์นดํซ์ ์์ ๋ ธ๋์์ ์นดํซ์ ๋๋ฌ ์ธ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ ธ๋์ ์นดํซ ๊ธฐ์ค์ผ๋ก ๋๋ฌ ์ธ์ธ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ณ์ฐํด ์ฃผ๋ ์์ผ๋ก ์ ๊ทผํ๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์๋ค.
ํ์ฌ ์์์์ ์ฃผ์ด์ง ์นดํซ์ ๋ ธ๋ ์นดํซ์ ๊ฐ๋ก ๋๋น๋ 2์ด๊ณ ์ธ๋ก ๋๋น๋ 1์ด๋ค.
์ด ๋ง์ ์ฆ์จ, ๋ ธ๋ ์นดํซ์ ๋๋ฌ ์ธ๊ณ ์๋ ๊ฐ์ ์นดํซ ๊ฐฏ์๋ (๋ ธ๋ ์นดํซ ๊ฐ๋ก ๋๋น ร 2) + (๋ ธ๋ ์นดํซ ์ธ๋ก ๋๋น ร 2)๋ฅผ ํตํด ๊ฐ์ ์ ์ผ๋ก ๊ตฌํ ์ ์๊ณ ์ด ์์ ๋๋จธ์ง ๊ตฌ์์ ์์นํ ๊ฐ์ ์นดํซ ๊ฐฏ์์ธ 4๋ฅผ ๊ณ์ฐํ ๊ฒฐ๊ณผ ๊ฐ์ ์ฃผ์ด์ง ๊ฐ์ ์นดํซ์ ๊ฐฏ์์ ๋น๊ตํ๋ค๋ฉด ๋ฌธ์ ์ ๋ต์ ๊ตฌํ ์ ์๋ค.
์ฝ๋
function solution(brown, yellow) {
for(let i=1; i<=Math.ceil(yellow/2); i++) { // index๊ฐ ๋ปํ๋ ๊ฒ์ ๋
ธ๋์ ์นดํซ์ ๋์ด(๋์ด๋ ๊ฐ๋ก๋ณด๋ค ์ปค์ง ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ก ๋๋น๊ฐ ๊ฐ์์ง๋ ๊ฒฝ์ฐ๊น์ง๋ง ์ํ)
let tmp = yellow % i;
if(tmp === 0) { // ๋
ธ๋ ์นดํซ์ ๋จ๊น ์์ด ๋ค์ด๋ง๋์ง ์๋ณ
const width = yellow/i;
if((width+i)*2+4 === brown) return [width+2, i+2] // ๋ชจ์๋ฆฌ์ ๋๋จธ์ง ๊ฐ๊น์ง ํฉ์ฐํด์ค์ผ ์ด ๋๋น ๋ฐ ๋์ด๋ฅผ ๋ฐํํ ์ ์์
}
}
}
๊ณ ์ฐฐ
์ฌ์ค ํด๋น ๋ฌธ์ ์ ๋ํด์ ํฌ์คํ ์ ํ ์ง ๊ณ ๋ฏผ์ ํ์๋ค.
์ด๋ค ํน์ ํ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ ์ ๋ํ ์ง์์ด ์ ์ ๋์ด ์์ด์ผ ํ ์ ์๋ ๊ฒ์ด ์๋๋ผ ์ฃผ์ด์ง ๋์์ ๋ํด์ ๋ถ์ํ๊ณ ์ด๋ฅผ ์์ผ๋ก ํํํ ์ ์๋๊ฐ์ ๋ํ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ๋ํด์ ์ํํ๊ณ ์๋ ๋ฌธ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํ์ง๋ง ์ผ์ ์ ์นด์นด์ค ๋ฌธ์ ์ค ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ ๋ํ ์ด์ ๋น์ทํ๊ฒ ๋์ํ๋ ๋ฌธ์ ์๊ณ ํค๋ฐํด ๊ฑฐ๋ฆฌ์ ๋ํด์ ์ ๋๋ก ๋ ์ดํด์ ์ด๋ฅผ ํ์ฉํ ์ ์๋ ํด๊ฒฐ ๋ฅ๋ ฅ์ ์๊ตฌํ๋ ๋ฌธ์ ์์ง๋ง ์ ๋๋ก ํ์ดํ์ง ๋ชปํ์๋ค.
๋ฌธ์ ์ ์ ์ฒด์ ์ธ ์คํ์ผ์ด๋ ๋์ด๋๋ ๋ค๋ฅด์ง๋ง ํด๋น ๋ฌธ์ ๋ฅผ ํ์ดํ๋ ๋ฐ์ ๊ฐ์ด, ์์ผ๋ก ๋์ํ ๋ฌธ์ ์ ๋ํด์ ์ฃผ์ด์ง ์ํฉ์ ๋ช ํํ ํ์ ํ๊ณ ๊ท์น์ ๋ฐ๊ฒฌ ๋ฐ ์์ผ๋ก ๊ฐ๋จํํ ์ ์๋ ๋ฅ๋ ฅ์ ์ต๋ํ ๋ฐฐ์ํ ์ ์๋๋ก ์ข ๋ ๋ ธ๋ ฅํด์ผ ํ ๊ฒ ๊ฐ๊ธฐ์ ํด๋น ๋ฌธ์ ์ ๋ํด์ ํฌ์คํ ํด๋ณด์๋ค.
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ ฌ]๊ฐ์ฅ ํฐ ์ (0) | 2021.11.21 |
---|---|
๋ค์ ํฐ ์ซ์_toString()์ผ๋ก ์ง์ ํํ (0) | 2021.10.21 |
[์๋ผํ ์คํ ๋ค์ค์ ์ฒด]์์์ฐพ๊ธฐ (0) | 2021.10.09 |
[๊ทธ๋ฆฌ๋]๊ตฌ๋ช ๋ณดํธ (0) | 2021.09.04 |
[์ ํด๋ฆฌ๋ ํธ์ ๋ฒ]์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2021.09.03 |