https://school.programmers.co.kr/learn/courses/30/lessons/181942
function solution(str1, str2) {
let answer = "";
for (let i = 0; i < str1.length; i++) {
answer = answer + str1[i] + str2[i];
}
return answer;
}
str1
과 str2
의 길이가 같으므로, 각각 인덱스에 맞는 문자를 더해 반환했다.
str1
을 배열로 만들어서 요소에 str2[idx]
를 더하고 join
했어도 되었다.
https://school.programmers.co.kr/learn/courses/30/lessons/181935
function solution(n) {
const nArr = [...Array(n+1).keys()].slice(1);
if (n % 2) {
return nArr.filter((v)=>v%2).reduce((a,c)=>a+c,0);
} else {
return nArr.filter((v)=>!(v%2)).reduce((a,c)=>a + c*c,0)
}
}
먼저 n
이하의 정수 배열을 만들었다. n
이 홀수인 경우 배열의 홀수값만 필터링하고 더해 반환했다. 짝수인 경우에는 값을 제곱했다는 점만 다르다.
https://school.programmers.co.kr/learn/courses/30/lessons/181934
function solution(ineq, eq, n, m) {
if (eq === "!") return new Function(`return ${n} ${ineq} ${m}`)() ? 1 : 0;
return new Function(`return ${n} ${ineq}${eq} ${m}`)() ? 1 : 0;
}
eval
과 비슷하게 동작하는 new Function()
문법을 사용했다.
https://school.programmers.co.kr/learn/courses/30/lessons/181932
function solution(code) {
let mode = "0";
let ret = '';
[...code].forEach((v, idx)=>{
if (mode === "0") {
if (v !== "1" && idx % 2 === 0) {
ret += v;
} else if (v === "1"){
mode = "1";
}
} else {
if (v !== "1" && idx % 2) {
ret += v;
} else if (v === "1"){
mode = "0";
}
}
})
return ret || "EMPTY";
}
문제에 나와 있는 조건에 맞춰 분기를 나열했다. 더 짧게 줄이는 방법은 모르겠다.