프로그래머스 Lv0 - 문자열 섞기, 홀짝에 따라 다른 값 반환하기, 조건 문자열, 코드 처리하기

찐새·2023년 4월 24일
0

코딩테스트

목록 보기
31/53
post-thumbnail

문자열 섞기

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;
}

풀이

str1str2의 길이가 같으므로, 각각 인덱스에 맞는 문자를 더해 반환했다.

참고

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";
}

풀이

문제에 나와 있는 조건에 맞춰 분기를 나열했다. 더 짧게 줄이는 방법은 모르겠다.

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글