[ํ๋ก๊ทธ๋๋จธ์ค] Lv0 : ์ํธ ํด๋
๋ฌธ์ ์ค๋ช
๊ตฐ ์ ๋ต๊ฐ ๋จธ์ฑ์ด๋ ์ ์ ์ค ์ ๊ตฐ์ด ๋ค์๊ณผ ๊ฐ์ ์ํธ ์ฒด๊ณ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์์๋์ต๋๋ค.
์ํธํ๋ ๋ฌธ์์ด cipher๋ฅผ ์ฃผ๊ณ ๋ฐ์ต๋๋ค.
๊ทธ ๋ฌธ์์ด์์ code์ ๋ฐฐ์ ๋ฒ์งธ ๊ธ์๋ง ์ง์ง ์ํธ์
๋๋ค.
๋ฌธ์์ด cipher์ ์ ์ code๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ํด๋
๋ ์ํธ ๋ฌธ์์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
์ ์ถ๋ ฅ ์
cipher | code | result |
---|---|---|
"dfjardstddetckdaccccdegk" | 4 | "attack" |
"pfqallllabwaoclk" | 2 | "fallback" |
function solution(cipher, code) {
let answer = [];
// cipher.split("").filter((e, i) => (i + 1) % code === 0);
for (let i = 0; i < cipher.length; i++) {
if ((i + 1) % code === 0) answer.push(cipher[i]);
}
return answer.join("");
}
์ํ ์ ๊ทผ
1. for ๋ฐ๋ณต์ ํตํด if ์กฐ๊ฑด์ i ๊ฐ์ 1์ ๋ํ์ฌ ์ธ๋ฑ์ค ๊ฐ์ ์์์ ๋ณ๊ฒฝ
2. 1๋ฒ์ ํตํด ๋ฐฐ์ด์ด ๋๋ cipher์ ์์ ์ธ๋ฑ์ค๋ 0์ด ์๋ 1๋ถํฐ ์์.
3. ๋ง์ฝ for ์กฐ๊ฑด์ i์ ๊ฐ์ 1๋ถํฐ ์ค์ ํ๊ฒ ๋๋ค๋ฉด ๊ทธ๊ฒ์ ๋จ์ง ์ ์ฒด ์ธ๋ฑ์ค์์ ์ธ๋ฑ์ค[1]๋ถํฐ ์ํํ๋ค๋ ๋ป
4. ๊ทธ๋ ๊ธฐ์ if์ ์กฐ๊ฑด์ code๋ฅผ ๋๋ ๋๋จธ์ง๊ฐ 0์ด ๋๋ ์๋ฆฌ์๋ฅผ ๋ถ๋ช
ํ๊ฒ ๋ฐํํ ์ ์์.
[ํ๋ก๊ทธ๋๋จธ์ค] Lv0 : ์นด์ดํธ ๋ค์ด
๋ฌธ์ ์ค๋ช
์ ์ start์ end๊ฐ ์ฃผ์ด์ง ๋, start์์ end๊น์ง 1์ฉ ๊ฐ์ํ๋ ์๋ค์ ์ฐจ๋ก๋ก ๋ด์ ๋ฆฌ์คํธ๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
์ ์ถ๋ ฅ ์
start | end | result |
---|---|---|
10 | 3 | [10,9,8,7,6,5,4,3] |
function solution(start, end) {
var answer = [];
while (start != end - 1) {
answer.push(start);
start--;
}
return answer;
}
์ํ ์ ๊ทผ
1. while์ ํตํด ํด๋น start๊ฐ์ด end -1๊ฐ ๋ ๋๊น์ง ์ํ.
function solution(start, end) {
return Array.from(Array(start - end + 1), (_, i) => start - i);
}
ํ์ด
1. Array.from( ) ๋ฉ์๋๋ฅผ ์ ์ฌ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋.
MDN - Array.from()
Array.from() ๋ฉ์๋๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด(array-like object)๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด(iterable object)๋ฅผ ์๊ฒ ๋ณต์ฌํด ์๋ก์ดArray ๊ฐ์ฒด๋ฅผ ๋ง๋ญ๋๋ค.
๊ตฌ๋ฌธ
Array.from(arrayLike[, mapFn[, thisArg]])
arrayLike
๋ฐฐ์ด๋ก ๋ณํํ๊ณ ์ ํ๋์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด.
mapFnOptional
๋ฐฐ์ด์ ๋ชจ๋ ์์์ ๋ํด ํธ์ถํ ๋งตํ ํจ์.
thisArgOptional
mapFn ์คํ ์์ this๋ก ์ฌ์ฉํ ๊ฐ.
function solution(start, end) {
return Array.from({ length: start - end + 1 }, (_, i) => start - i);
}
๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์กฐ๊ฑด์ ๋ง๋ ๋ฐ๋ณต๊ฐ๋ฅํ ๋ฐฐ์ด ์์ฑํ ์ ์์.
[ํ๋ก๊ทธ๋๋จธ์ค] Lv0 : ๊ฐ์ ๋ฐ์ ๋ณด
๋ฌธ์ ์ค๋ช
๊ฐ์๋ 2 ๋ฐ์๋ 0 ๋ณด๋ 5๋ก ํํํฉ๋๋ค. ๊ฐ์ ๋ฐ์ ๋ณด๋ฅผ ๋ด๋ ์์๋๋ก ๋ํ๋ธ ๋ฌธ์์ด rsp๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, rsp์ ์ ์ฅ๋ ๊ฐ์ ๋ฐ์ ๋ณด๋ฅผ ๋ชจ๋ ์ด๊ธฐ๋ ๊ฒฝ์ฐ๋ฅผ ์์๋๋ก ๋ํ๋ธ ๋ฌธ์์ด์ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
์ ํ์ฌํญ
์ ์ถ๋ ฅ ์
end | result |
---|---|
"2" | "0" |
"205" | "052" |
function solution(rsp) {
var answer = "";
if (rsp.includes("2")) answer = rsp.replaceAll("2", "0");
else if (rsp.includes("0")) answer = rsp.replaceAll("0", "5");
else if (rsp.includes("5")) answer = rsp.replaceAll("5", "2");
return answer;
}
์ํ ์ ๊ทผ
1. else if๋ฅผ ํตํด ์ฐ์๋ ์กฐ๊ฑด์ answer ๊ฐ์ ์ฌํ ๋น ํ๋ฉด ๊ฐ์ด ๋์ฌ ์ค ์.
2. ํ์ง๋ง answer๋ ํด๋น ์กฐ๊ฑด์ด ๋ชจ๋ ํต๊ณผํ ๋ง์ง๋ง ๊ฐ๋ง ์์ ํด์ ๋ฐํ.
๋ฌธ์ ์ ๊ทผ
1. ์ฐ์๋ ์กฐ๊ฑด์ ํด๋นํ๋ ๋ฐ๋ณต์ ์ฒ๋ฆฌํ๋๊ฐ.
function solution(rsp) {
var answer = "";
let arr = rsp.split("");
for (let i = 0; i < arr.length; i++) {
if (arr[i] === "0") answer += "5";
if (arr[i] === "2") answer += "0";
if (arr[i] === "5") answer += "2";
}
return answer;
}
function solution(rsp) {
return rsp.split("").map((v) => v==="2" ? 0 : (v==="0" ? 5 : 2)).join("")
}
3.๊ฐ์ฒด๋ฅผ ํตํด ๋งคํํ ๋ค์ ๋ฐ๋ณต ํด์ฃผ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
function solution(rsp) {
const mapping = {
"2": "0",
"0": "5",
"5": "2"
};
let answer = "";
for (let i = 0; i < rsp.length; i++) {
const char = rsp[i];
if (char in mapping) {
answer += mapping[char];
} else {
answer += char;
}
}
return answer;
}
์ ์ฝ๋๋ฅผ ๊ฐ์ ํด๋ณด๋ฉด
/*
๊ฐ์๋ 2 ๋ฐ์๋ 0 ๋ณด๋ 5
*/
function solution(rsp) {
let arr = {
2: 0,
0: 5,
5: 2
};
var answer = [...rsp].map(v => arr[v]).join("");
return answer;
}
์์ ๊ฐ์ด ๊ฐ์ ๊ฐ๋ฅํจ.
๊ฐ์ฒด๋ฅผ ํตํ ๊ฐ์ ๋งคํํ๋ ๋ฐฉ๋ฒ๊ณผ ๊ฐ์ฒด ์ฌ์ฉ์ ์์์ ๋ํด ๋ค์๊ธ ์๊ฐํ ์ ์๊ฒ ๋จ.