function solution(arr) {
// ์ฌ๊ท ํธ์ถ์ ์ํ ๋ด๋ถ ํจ์๋ฅผ ๋ง๋ ๋ค.
// ์ด ํจ์๋ ์ฒ๋ฆฌํด์ผ ํ ๋ฐฐ์ด์ ๋ถ๋ถ์ ์ธ์๋ก ๋ฐ๋๋ค.
function recursiveOR(currentArr) {
// **๋ฒ ์ด์ค ์ผ์ด์ค:** ๋ง์ฝ ํ์ฌ ์ฒ๋ฆฌํ ๋ฐฐ์ด์ด ๋น์ด์๋ค๋ฉด (๊ธธ์ด๊ฐ 0์ด๋ผ๋ฉด)
if (currentArr.length === 0) {
// ๋ ์ด์ OR ํ ๊ฒ ์์ผ๋ 0์ ๋ฐํํ๊ณ ์ฌ๊ท๋ฅผ ๋ฉ์ถ๋ค.
return 0;
}
// **์ฌ๊ท ์คํ
:**
// 1. ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ฐ์ ธ์จ๋ค.
const firstBinaryString = currentArr[0];
// 2. ์ฒซ ๋ฒ์งธ 2์ง์ ๋ฌธ์์ด์ 10์ง์ ์ ์๋ก ๋ฐ๊พผ๋ค.
const firstDecimalValue = parseInt(firstBinaryString, 2);
// 3. ๋ฐฐ์ด์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ์ธํ '๋๋จธ์ง' ๋ถ๋ถ์ ๋ง๋ ๋ค.
const restOfArray = currentArr.slice(1);
// 4. ์ฒซ ๋ฒ์งธ ๊ฐ์๋ค๊ฐ '๋๋จธ์ง' ๋ฐฐ์ด์ ์ฌ๊ท์ ์ผ๋ก OR ์ฐ์ฐํ ๊ฒฐ๊ณผ๋ฅผ ๋นํธ OR ํ๋ค.
// ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
return firstDecimalValue | recursiveOR(restOfArray);
}
// solution ํจ์๋ ์ต์ด ํธ์ถ๋ ๋ ์ ์ฒด ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ๋ด๋ถ ์ฌ๊ท ํจ์๋ฅผ ํธ์ถํ๋ค.
return recursiveOR(arr);
}
์ด ์ฝ๋๋ฅผ ๋ฐํ์ผ๋ก ์ฌ๊ท ํจ์์ ๋์ ์๋ฆฌ๋ฅผ ์ค๋ช ํ๋ ๋ฐ์ด๋ค.
1. ์ฌ๊ท ํจ์ ๋ด return
์ ์ญํ
์ฌ๊ท ํจ์ ๋ด๋ถ์์ return
์ ํฌ๊ฒ ๋ ๊ฐ์ง ์ค์ํ ์ญํ ์ ํ๋ค.
- ๋ฒ ์ด์ค ์ผ์ด์ค์์์
return
:- ์ด
return
์ ์ฌ๊ท ํธ์ถ์ ์ฐ์์ ๋ฉ์ถ๋ ์ญํ ์ ํ๋ค. ๋ง์ฝ ์ด ๋ถ๋ถ์ด ์๋ค๋ฉด ํจ์๋ ์์ ์ ๋ฌดํํ ํธ์ถํ๊ฒ ๋์ด ํ๋ก๊ทธ๋จ ์ค๋ฅ๋ก ์ด์ด์ง ๊ฒ์ด๋ค. - ๋ฒ ์ด์ค ์ผ์ด์ค๋ ๋ฌธ์ ๊ฐ ๋ ์ด์ ์๊ฒ ๋๋ ์ ์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ํ๋ฅผ ์๋ฏธํ๋ค. ์ด ์ํ์์๋ ์ฌ๊ท ํธ์ถ ์์ด๋ ๋ฌธ์ ์ ๋ต์ด '์ฆ์' ๊ฒฐ์ ๋๋ค.
- ๋ฒ ์ด์ค ์ผ์ด์ค์์์
return
์ ๊ทธ ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ ์ ๋ต์ ๋ฐํํ๋ฉฐ, ์ด ๊ฐ์ ์ฌ๊ท ํธ์ถ ์คํ์ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉฐ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๊ตฌ์ฑํ๋ '๊ธฐ์ด๊ฐ'์ด ๋๋ค. - ์ ์๋ ์์ ์ฝ๋์์
currentArr.length === 0
์ผ ๋return 0;
ํ๋ ๋ถ๋ถ์ด ๋ฐ๋ก ๋ฒ ์ด์ค ์ผ์ด์ค์return
์ด๋ค. ๋น ๋ฐฐ์ด์ ๋นํธ OR ์ฐ์ฐ ๊ฒฐ๊ณผ๋ 0์ด๋ฏ๋ก, ์ฌ๊ธฐ์ 0์ ๋ฐํํจ์ผ๋ก์จ ์ฌ๊ท๊ฐ ์ข ๋ฃ๋๊ณ ๊ณ์ฐ์ด ์์๋๋ ๊ฒ์ด๋ค.
- ์ด
- ์ฌ๊ท ์คํ
์์์
return
:- ์ด
return
์ ํ์ฌ ๋จ๊ณ์์ ์ํํ ์์ ๊ฒฐ๊ณผ์ ์๊ธฐ ์์ ์ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ์ฌ ์ป์ '๋ ์์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ'๋ฅผ ์กฐํฉํ์ฌ ๋ฐํํ๋ ์ญํ ์ ํ๋ค. - ์ฆ, "๋์๊ฒ ์ฃผ์ด์ง ๋ฌธ์ ์ค ๋ด๊ฐ ์ฒ๋ฆฌํ ๋ถ๋ถ์ ์ฒ๋ฆฌํ๊ณ , ๋๋จธ์ง ๋ถ๋ถ์ ์ฌ๊ท ํธ์ถ๋ ๋ค๊ฐ ํด๊ฒฐํด์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์๋ผ. ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋์ ๊ฒฐ๊ณผ์ ํฉ์ณ์ ๋ด ์์ ํธ์ถ์์๊ฒ ๋๊ฒจ์ฃผ๊ฒ ๋ค." ์ ๊ฐ์ ์๋ฏธ๋ค.
- ์์ ์ฝ๋์์
return firstDecimalValue | recursiveOR(restOfArray);
์ด ๋ถ๋ถ์ด ์ฌ๊ท ์คํ ์return
์ด๋ค. ์ฌ๊ธฐ์recursiveOR(restOfArray)
๋ '์๊ธฐ ์์ ์ ๋ ์์ ๋ฌธ์ ๋ก ํธ์ถํ๋ ๋ถ๋ถ'์ด๋ฉฐ, ์ดreturn
์ ํ์ฌ ๋จ๊ณ์firstDecimalValue
์ ์ฌ๊ท ํธ์ถ์ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋นํธ OR ์ฐ์ฐํ์ฌ ์์ ํธ์ถ์์๊ฒ ์ ๋ฌํ๋ ๊ฒ์ด๋ค.
- ์ด
2. ์ฌ๊ท ํจ์๊ฐ ์์ ์ ํธ์ถํ๋ ๋ฐฉ์
์ฌ๊ท ํจ์๋ ์๊ธฐ ์์ ์ ํจ์ ๋ณธ๋ฌธ ์์์ ๋ค์ ์๊ธฐ ์์ ์ ํธ์ถํ๋ค. ๊ทธ๋ฌ๋ ์ด๋ ์ค์ํ ๊ท์น์ด ์๋ค.
- ์๊ธฐ ์์ ์ ํธ์ถํ ๋๋ ๋ฐ๋์ ์ฒ๋ฆฌํด์ผ ํ ๋ฌธ์ ์ ๋ฒ์๋ฅผ '์ค์ฌ์' ๋๊ฒจ์ฃผ์ด์ผ ํ๋ค.
- ๋ฌธ์ ์ ํฌ๊ธฐ๊ฐ ์ ์ง์ ์ผ๋ก ์์์ ธ์ ๊ฒฐ๊ตญ์๋ ๋ฒ ์ด์ค ์ผ์ด์ค์ ๋๋ฌํ๋๋ก ์ค๊ณ๋์ด์ผ ํ๋ค. ๋ง์ฝ ๋ฌธ์ ์ ํฌ๊ธฐ๊ฐ ์ค์ด๋ค์ง ์๊ฑฐ๋ ๋ฒ ์ด์ค ์ผ์ด์ค์ ๋๋ฌํ์ง ๋ชปํ๋ค๋ฉด ๋ฌดํ ์ฌ๊ท ํธ์ถ์ ๋น ์ง๊ฒ ๋๋ค.
- ์์ ์ฝ๋์์
recursiveOR(restOfArray)
๋ถ๋ถ์ด ์๊ธฐ ์์ ์ ํธ์ถํ๋ ๊ณณ์ด๋ค. ์๋ ์ธ์์๋currentArr
์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ์ธํrestOfArray
๋ฅผ ๋๊ฒจ์ค์ผ๋ก์จ, ์ฌ๊ท ํธ์ถ๋ ๋๋ง๋ค ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ํ๋์ฉ ์ค์ด๋ค์ด ๊ฒฐ๊ตญ ๊ธธ์ด๊ฐ 0์ธ ๋ฒ ์ด์ค ์ผ์ด์ค์ ๋๋ฌํ๊ฒ ๋๋ ๊ตฌ์กฐ์ด๋ค.
3. ๊ฒ์์์ return
(์ต์ด ํธ์ถ ๋ถ๋ถ)
์ฌ๊ท ํจ์ ์์ฒด๊ฐ ์๋, ๊ทธ ์ฌ๊ท ํจ์๋ฅผ ๋งจ ์ฒ์ ํธ์ถํ๋ ๋ถ๋ถ (์์ ์ฝ๋์์ solution
ํจ์ ์์ return recursiveOR(arr);
)์์์ return
์ ์กฐ๊ธ ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง๋ค.
- ์ด
return
์ "์ด์ ๋ถํฐrecursiveOR
ํจ์์๊ฒarr
์ ์ฒด ๋ฐฐ์ด์ ๊ฐ์ง๊ณ ๋ฌธ์ ๋ฅผ ํ๋๋ก ์ํฌ ๊ฒ์ด๋ฉฐ,recursiveOR
ํจ์๊ฐ ๋ชจ๋ ์ฌ๊ท ํธ์ถ ๊ณผ์ ์ ๊ฑฐ์ณ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ด๋์ผ๋ฉด, ๋๋ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์์ ๋ฐํํ ๊ฒ์ด๋ค" ๋ผ๋ ์ญํ ์ ํ๋ค. - ์ด๋ ์ฌ๊ท ํจ์ ๋ด๋ถ์
return
๋ค๊ณผ ๋ฌ๋ฆฌ, ์ฌ๊ท ํธ์ถ์ '์์'์ ์๋ฆฌ๊ณ ๊ทธ '์ต์ข ' ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์์ ๋ฐํํ๋ ๊ฒ์ดํธ์จ์ด ์ญํ ์ ํ๋ค๊ณ ๋ณผ ์ ์๋ค.
์ฌ๊ท ํจ์ ๋์์ธ์ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์
ํ๋ฅญํ๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ฌ๊ท ํจ์๋ฅผ ์ค๊ณํ๊ธฐ ์ํ ์ผ๋ฐ์ ์ธ ์ ๊ทผ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฌธ์ ์ ์๋ฅผ ๋ช
ํํ ํ๊ธฐ:
- ์ด ํจ์๋ ์ด๋ค ์ ๋ ฅ์ ๋ฐ์์ ์ด๋ค ์ถ๋ ฅ์ ๋ฐํํด์ผ ํ๋์ง ์ ์ํ๋ค.
- ๋ฌธ์ ๊ฐ ์์ ํ ํด๊ฒฐ๋ ์ํ๋ ์ด๋ค ์ํ์ธ์ง ํ์ ํ๋ค.
- ๋ฒ ์ด์ค ์ผ์ด์ค ์ฐพ๊ธฐ:
- ๋ฌธ์ ๊ฐ ๋ ์ด์ ์ชผ๊ฐ์ง์ง ์๋ ๊ฐ์ฅ ๋จ์ํ ๊ฒฝ์ฐ, ์ฆ '์๋ช ํ ๋ต'์ด ์กด์ฌํ๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋๋ค.
- ์ด ๋ฒ ์ด์ค ์ผ์ด์ค์์๋ ์ฌ๊ท ํธ์ถ ์์ด ๊ณง๋ฐ๋ก ๋ต์
return
ํด์ผ ํ๋ค. ์ดreturn
์ด ์ฌ๊ท์ ๋์ ์๋ฆฌ๋ ์ ํธ๋ค.
- ์ฌ๊ท ์คํ
์ค๊ณํ๊ธฐ:
- ๋ฒ ์ด์ค ์ผ์ด์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ์ฆ ๋ ํฐ ๋ฌธ์ ์ํฉ์ ๊ณ ๋ คํ๋ค.
- ํ์ฌ์ 'ํฐ ๋ฌธ์ '๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด '๋์ ๋๊ฐ์ ํจ์'์๊ฒ '์กฐ๊ธ ๋ ์์ ๋ฌธ์ '๋ฅผ ํด๊ฒฐํด ๋ฌ๋ผ๊ณ ์์ฒญํ๋ ๋ฐฉ์์ ์๊ฐํ๋ค. (์ด๊ฒ์ด ์ฌ๊ท์ ์ฌ๊ณ ๋ค.)
- '๋ ์์ ๋ฌธ์ '๋ ๋ฐ๋์ ๋ฒ ์ด์ค ์ผ์ด์ค ๋ฐฉํฅ์ผ๋ก ์งํ๋์ด์ผ ํ๋ค.
- '๋ ์์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ'๊ฐ ์ฃผ์ด์ก๋ค๊ณ ๊ฐ์ ํ์ ๋, ํ์ฌ ๋จ๊ณ์์ ํ์ํ ์ถ๊ฐ์ ์ธ ๊ณ์ฐ์ด๋ ์์ ์ ์ ์ํ๋ค.
- ํ์ฌ ๋จ๊ณ์ ๊ณ์ฐ ๊ฒฐ๊ณผ์ ์ฌ๊ท ํธ์ถ๋ก ์ป์ '๋ ์์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ'๋ฅผ ์ ์ ํ ์กฐํฉํ์ฌ
return
ํ๋ค. ์ดreturn
์ด ํ์ฌ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ์์ ํธ์ถ์์๊ฒ ์ ๋ฌํ๋ค.
- ํจ์ ๊ตฌ์กฐ ์ก๊ธฐ:
- ์ผ๋ฐ์ ์ผ๋ก ํจ์์ ์์ ๋ถ๋ถ์ ๋ฒ ์ด์ค ์ผ์ด์ค ์กฐ๊ฑด์ ์ฒดํฌํ๋
if
๋ฌธ์ ๋ฐฐ์นํ๊ณ , ๋ฒ ์ด์ค ์ผ์ด์ค์ผ ๊ฒฝ์ฐ ๋ฐ๋กreturn
ํ๋๋ก ํ๋ค. - ๋ฒ ์ด์ค ์ผ์ด์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ์ฌ๊ท ์คํ
์ฝ๋๋ฅผ ์์ฑํ์ฌ ํ์ํ ๊ณ์ฐ์ ์ํํ๊ณ ์๊ธฐ ์์ ์ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ ํ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ์ฌ ๋จ๊ณ์ ๊ณ์ฐ๊ณผ ์กฐํฉํ์ฌ
return
ํ๋๋ก ํ๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํจ์์ ์์ ๋ถ๋ถ์ ๋ฒ ์ด์ค ์ผ์ด์ค ์กฐ๊ฑด์ ์ฒดํฌํ๋
- ์ต์ด ํธ์ถ ๊ณ ๋ คํ๊ธฐ:
- ์ค์ ๋ก ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํ ๋๋, ์ ์ฒด ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์ฌ๊ท ํจ์๋ฅผ ํ ๋ฒ๋ง ํธ์ถํ๋ฉด ๋๋ค. ์์ ์ฝ๋์
solution(arr)
์์return recursiveOR(arr);
์ฒ๋ผ ๋ง์ด๋ค.
- ์ค์ ๋ก ์ฌ๊ท ํจ์๋ฅผ ์ฌ์ฉํ ๋๋, ์ ์ฒด ๋ฌธ์ ๋ฅผ ๊ฐ์ง๊ณ ์ฌ๊ท ํจ์๋ฅผ ํ ๋ฒ๋ง ํธ์ถํ๋ฉด ๋๋ค. ์์ ์ฝ๋์
'๐ป FE > ๐ JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
"ํจ์๋ ๊ฐ์ฒด๋ค" (0) | 2025.05.13 |
---|---|
๋ค์ํ ํ์ดํ ํจ์ ๊ตฌ๋ฌธ (0) | 2025.05.13 |
์๋ฐ์คํฌ๋ฆฝํธ์์ on๊ณผ handle์ ๊ด๊ณ์ ๋ํด ์์๋ณด์๋ค. (0) | 2025.04.20 |
๋ฐ๋๋ผ JS ํด๋์ค ์ฝ์ง ๊ธฐ๋ก: ์ค๊ณ๋ถํฐ this์์ ์จ๋ฆ๊น์ง (0) | 2025.04.06 |
์ด์ ๋ MVC, ์ค๋์ ๋ฐ๋๋ผJS๋ก SPA (0) | 2025.04.03 |