수 조작하기 2

정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.

  • "w" : 수에 1을 더한다.
  • "s" : 수에 1을 뺀다.
  • "d" : 수에 10을 더한다.
  • "a" : 수에 10을 뺀다.

그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.

주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요.

수 조작하기 2Lv.0

181925

https://school.programmers.co.kr/learn/courses/30/lessons/181925?language=javascript

해설

  • Name
    numLog 배열을 반복
    Type
    Description

    배열을 반복하면서 각 요소와 그 다음 요소 간의 차이(diff)를 계산합니다. 이 반복은 배열의 마지막 요소 직전까지만 수행됩니다(i < numLog.length - 1).

  • Name
    switch 문을 사용
    Type
    Description
    • diff가 1일 경우: "w"를 result 배열에 추가합니다.
    • diff가 -1일 경우: "s"를 result 배열에 추가합니다.
    • diff가 10일 경우: "d"를 result 배열에 추가합니다.
    • diff가 위의 세 경우에 해당하지 않을 때: 기본값으로 "a"를 result 배열에 추가합니다.
  • Name
    반복문이 종료
    Type
    Description
    • result 배열에 담긴 문자들을 연결하여 하나의 문자열로 만듭니다(result.join('')).

numLog 배열의 연속된 숫자들 사이의 관계를 특정 문자열로 매핑하는 데 사용됩니다. 예를 들어, 숫자가 1씩 증가하면 "w", 1씩 감소하면 "s", 10씩 증가하면 "d"로 매핑되고, 그 외의 경우는 모두 "a"로 매핑됩니다. 이러한 매핑은 특정 게임의 방향키나 명령을 문자로 표현할 때 유용할 수 있습니다.

수 조작하기 2

function solution(numLog) {
    let result = [];

    for (let i = 0; i < numLog.length - 1; i++) {
        let diff = numLog[i + 1] - numLog[i];

        switch (diff) {
            case 1:
                result.push("w");
                break;
            case -1:
                result.push("s");
                break;
            case 10:
                result.push("d");
                break;
            default:
                result.push("a");
        }
    }
    return result.join('');
}