본문 바로가기
배움 기록/코테 연습

[프로그래머스] 수 조작하기 2 : JavaScript

by dygreen 2024. 11. 3.

📌 문제

 

📌 풀이

function solution(numLog) {
    return numLog.reduce((acc, curr, i) => {
        if (i === 0) return acc;
        const diff = curr - numLog[i - 1];

        if (diff === 1) {
            return acc + 'w';
        } else if (diff === -1) {
            return acc + 's';
        } else if (diff === 10) {
            return acc + 'd';
        } else if (diff === -10) {
            return acc + 'a';
        }
        return acc;
    }, '');
}

 

오랜만에 공부를 하다보니 문제를 해석하는데 시간이 좀 걸렸다😓

차근 차근 노트에 정리하면서 해석해보니, 주어진 numLog 배열에서 일단 앞, 뒤 값을 가져와서 '뒤 - 앞' 을 했을 경우 나오는 값으로 문자열을 판단해 return 하면 된다고 생각했다.

 

예를 들어, numLog[1] - numLog[0] 를 했을 때

값이 1 인 경우 'w' 이고,

-1 인 경우엔 's',

10 인 경우엔 'd',

-10 인 경우엔 'a' 로 판단하면 되는 것이다.

 

개인적으로 reduce 함수에 익숙해지고 싶어서 이를 사용해 풀었다

  • acc : initailValue 를 '' 빈 문자열로 제공했다
  • curr : 반복문을 돌면서 도출되는 현재 값이다
  • if (i === 0) return acc : 첫 번째 값은 비교하지 않는다
  • 이후로 초기 값에 각 조건에 맞는 문자열을 추가해 return 하도록 했다

 

 

 

조건문, 반복문 관련 문제를 풀면서 익혀야할 개념을 정리해본다.

문자열을 배열로 변환하는 방법

스프레드 연산자 사용하기! (→ 가장 빠른 속도를 보여준다고 한다)

const arr = [..."melon"]; // ['m', 'e', 'l', 'o', 'n']

 

배열을 문자열로 변환하는 방법

join 메서드 사용하기!

const str = ['m', 'e', 'l', 'o', 'n'].join(''); // 'melon'

 

728x90

댓글