
1. 코드 처리하기
문자열 code가 주어집니다.
code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다.
mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다.
mode는 0과 1이 있으며, idx를 0부터 code의 길이 -1까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.
mode가 0일때
mode가 1일때
문자열 code를 통해 만들어진 문자열 ret를 return 하는 solution 함수를 완성해 주세요.
단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 'EMPTY'를 return합니다.



// 내코드
function solution(code) {
var answer = "";
var mode = 0;
var arr = code.split("");
arr.map((i, k) => {
if(i ==='1') {
mode = 1 - mode;
} else if(mode === 0 && k % 2 === 0) {
answer +=i;
} else if (mode ===1 && k % 2 === 1) {
answer +=i;
}
});
if(answer === '') {
answer = 'EMPTY';
}
return answer;
}
2. 등차수열의 특정한 항만 더하기
두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i+1항을 의미할 때, 이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 return하는 solution 함수를 작성해 주세요.

a와 d가 각각 3,4 이고 included의 길이가 5입니다. 이를 표로 나타내면 다음과 같습니다.

따라서 true에 해당하는 1항, 4항, 5항을 더한 3 + 15 + 19 = 37을 return 합니다.
a와 d가 각각 7,1이고 included의 길이가 7입니다. 이를 표로 나타내면 다음과 같습니다.

따라서 4항만 true이므로 10을 return 합니다.
//내 코드
function solution(a, d, included) {
var answer = 0;
for(var i = 0; i < included.length; i++) {
if (included[i]) {
answer += (a + i * d);
}
}
return answer;
}
//다른 사람 코드
function solution(a, d, included) {
return included.reduce((acc, flag, i) => {
return flag? acc + a + d + i : acc
}, 0)
}
3. 주사위 게임2
1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

//내 코드
function solution(a, b, c) {
var answer = 0;
if(a === b && b === c) {
answer = (a + b + c)*( a**2 + b**2 + c**2)*(a**3 + b**3 + c**3);
} else if (a !== b && a !== c && b !==c) {
answer = a + b + c;
} else {
answer = (a + b + c)*( a**2 + b**2 + c**2);
}
return answer;
}
기본적인 산수에서 조건문으로 넘어온 만큼 생각하는 시간이 길어지는 것을 느꼈다. 다른 사람의 풀이를 보면서 이건 왜 이렇게 풀었을까? 고민도 하고 가장 자스같은 코드가 뭘까 고민도 많이 했다.
구현 단계로 넘어갈때 조금이라도 효율적인 코드를 작성하기 위해서 공부를 많이 해야할 거 같다..