숨참고 개발다이브

[프로그래머스] Lv.0 자바스크립트 문제 정리 (2) 본문

개발/문제풀기

[프로그래머스] Lv.0 자바스크립트 문제 정리 (2)

뚀니 Ddoeni 2024. 10. 28. 17:17
728x90


감기 이슈로 일주일이나 쉰 건에 대하여...

 

 

1. 문자열 섞기

function solution(str1, str2) {
    const answers = [];

    for (i = 0; i < str1.length; i++) {
        answers.push(str1[i]);
        answers.push(str2[i]);
    }
    var answer = answers.join('');
    return answer;
}

 

.map()을 사용하면 더 간단하게 해결

function solution(str1, str2) {
    return [...str1].map((x, idx)=> x+str2[idx]).join("");
}

 

 

 

2. 문자 리스트를 문자열로 변환하기

function solution(arr) {
    var answer = arr.join('');
    return answer;
}

 

까먹지 말라고 반복되는 join() 문제

 

 

3. 문자열 곱하기

function solution(my_string, k) {
    var answer = my_string.repeat(k);
    return answer;
}

 

이 문제도 복습용인지 repeat() 메서드 문제가 또 나왔다.

 

 

4. 더 크게 합치기

function solution(a, b) {
    const ab = String(a) + String(b);
    const ba = String(b) + String(a);
    
    return ab > ba ? Number(ab) : Number(ba);
}

 

생각나는 대로 풀었는데,

 

function solution(a, b) {
    return Math.max(Number(`${a}${b}`), Number(`${b}${a}`))
}

 

다른 사람 답변 보고 아니 이렇게 쉬운 방법이...! 했다.. 역시 아는걸 얼마나 활용하냐가 중요한 듯

 

 

5. 두 수의 연산값 비교하기

function solution(a, b) {
    return Math.max(`${a}${b}`, 2 * a * b);
}

 

그래서 바로 활용해 주었다.

parseInt(a+""+b+""); 이런 식으로 타입을 변환해 주는 사람도 있는데, 이건 취향 차이인 듯...

 

 

6. n의 배수

function solution(num, n) {
    return num % n === 0 ? 1 : 0;
}

 

기초라 코멘트 없음...

 

 

7. 공배수

function solution(number, n, m) {
    return number % n || number % m ? 0 : 1;
}

 

이 문제 역시 눈길을 끌었던 다른 답변이 있는데

function solution(number, n, m) {
  return +!(number % n || number % m);
}

 

문제가 0 혹은 1을 리턴하라고 명시되었기 때문에 앞에 +를 붙여서 푼 게 인상적이었다.

 

 

8. 홀짝에 따라 다른 값 반환하기

function solution(n) {
    var answer = 0;
    
    if (n % 2) {
        for (i = 1; i <= n; i += 2) {
            answer += i;
        }
    } else {
        for (i = 0; i <= n; i += 2) {
            answer += Math.pow(i, 2);
        }
    }
    return answer;
}

 

이 문제 답변 중에 수학 공부도 다시 해줘야겠다고 생각한 게 있다.

function solution(n) {
    if(n%2===1)
      return  (n+1)/2*((n + 1)/2) ;
    else
      return   n*(n+1)*(n+2)/6;
}

 

물론 Math.pow() 메서드를 써도 무방하겠지만, 잊고 있던 식이 눈에 들어오자마자 아 수학공부... 했던 답이었음

 

 

9. 조건 문자열

function solution(ineq, eq, n, m) {
    switch(`${ineq}${eq}`) {
        case '>=':
            return +(n >= m);
        case '<=':
            return +(n <= m);
        case '>!':
            return +(n > m);
        case '<!':
            return +(n < m);
    }
}

 

처음엔 어떻게 풀어볼까 고민하다가 switch-case 문이 적당해 보였다.

나도 이전 문제의 답변의 +를 활용하여 boolean을 0 혹은 1로 출력하도록 처리해 보았다.

 

 

10. flag에 따라 다른 값 반환하기

function solution(a, b, flag) {
    return flag ? a + b : a - b;
}

 

이것두.. 너무 기초적이라 따로 코멘트는 없음.

300x250
Comments