
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
n이 1 커집니다.n이 1 작아집니다.n이 10 커집니다.n이 10 작아집니다.위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
n ≤ 100,000control의 길이 ≤ 100,000control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.| n | control | result |
|---|---|---|
| 0 | "wsdawsdassw" | -1 |
입출력 예 #1
n은 control에 따라 다음과 같은 순서로 변하게 됩니다.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;
}
동작 정의 객체 (operations):
operations라는 객체를 만들어 각 문자("w", "a", "s", "d")에 대응하는 계산 방식을 정의합니다.
이렇게 함수를 미리 객체에 매핑하면, 이후 op 값에 따라 쉽게 해당 함수를 호출하여 result를 갱신할 수 있습니다.
초기값 설정:
함수의 입력값 n을 result에 할당합니다. 이렇게 하면 result는 계속해서 control 문자열에 따라 갱신되는 값이 됩니다.
문자열 순회:
for (const op of control) 문을 통해 control 문자열을 앞에서부터 한 글자씩 순회합니다.
여기서 op는 control 문자열에 포함된 "w", "a", "s", "d" 중 하나가 됩니다.
동작 적용:
각 문자에 해당하는 함수를 operations[op](result)를 통해 호출하고, 그 결과를 다시 result에 할당하여 result 값을 갱신합니다.
예를 들어, op가 "w"라면 operations['w'](result)를 실행하여 result를 1 증가시키고, "d"라면 10 증가시키는 식입니다.
최종값 반환:
모든 문자를 순회하고 나면 result에는 모든 연산이 적용된 최종 값이 들어 있습니다. 이 값을 반환합니다.
이 로직을 통해, 초기값 n에서 시작해 control 문자열의 각 문자가 지시하는 대로 n을 변화시킨 뒤, 최종적으로 변화된 값을 결과로 얻을 수 있습니다.