[JavaScript] Lv0 - 수 조작하기 1

Moon·2024년 12월 17일
0
post-thumbnail

수 조작하기

문제 설명

정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.

  • "w" : n이 1 커집니다.
  • "s" : n이 1 작아집니다.
  • "d" : n이 10 커집니다.
  • "a" : n이 10 작아집니다.

위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.


제한사항

  • 100,000 ≤ n ≤ 100,000
  • 1 ≤ control의 길이 ≤ 100,000
    • control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.

입출력 예

ncontrolresult
0"wsdawsdassw"-1

입출력 예 설명

입출력 예 #1

  • 수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
  • 0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
  • 따라서 -1을 return 합니다.

function solution(n, control) {
  const operations = {
    w: (n) => n + 1,
    s: (n) => n - 1,
    d: (n) => n + 10,
    a: (n) => n - 10,
  };

  let result = n;

  for (const op of control) {
    result = operations[op](result);
  }

  return result;
}

코드 동작 방식 설명

  1. 동작 정의 객체 (operations):

    operations라는 객체를 만들어 각 문자("w", "a", "s", "d")에 대응하는 계산 방식을 정의합니다.

    • "w": 현재 값에 1을 더하는 함수
    • "s": 현재 값에서 1을 빼는 함수
    • "d": 현재 값에 10을 더하는 함수
    • "a": 현재 값에서 10을 빼는 함수

    이렇게 함수를 미리 객체에 매핑하면, 이후 op 값에 따라 쉽게 해당 함수를 호출하여 result를 갱신할 수 있습니다.

  2. 초기값 설정:

    함수의 입력값 nresult에 할당합니다. 이렇게 하면 result는 계속해서 control 문자열에 따라 갱신되는 값이 됩니다.

  3. 문자열 순회:

    for (const op of control) 문을 통해 control 문자열을 앞에서부터 한 글자씩 순회합니다.

    여기서 opcontrol 문자열에 포함된 "w", "a", "s", "d" 중 하나가 됩니다.

  4. 동작 적용:

    각 문자에 해당하는 함수를 operations[op](result)를 통해 호출하고, 그 결과를 다시 result에 할당하여 result 값을 갱신합니다.

    예를 들어, op가 "w"라면 operations['w'](result)를 실행하여 result를 1 증가시키고, "d"라면 10 증가시키는 식입니다.

  5. 최종값 반환:

    모든 문자를 순회하고 나면 result에는 모든 연산이 적용된 최종 값이 들어 있습니다. 이 값을 반환합니다.


이 로직을 통해, 초기값 n에서 시작해 control 문자열의 각 문자가 지시하는 대로 n을 변화시킨 뒤, 최종적으로 변화된 값을 결과로 얻을 수 있습니다.

profile
MOON.DEVLOG

0개의 댓글