[프로그래머스] 수 조작하기 1

badassong·2023년 8월 11일
0

JS

목록 보기
26/31
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 함수를 완성해 주세요.


내가 푼 방법

function solution(n, control) {
  for (let i = 0; i < control.length; i++) {
    switch (control[i]) {
        case "w" :
          n += 1
          break;  
        case "s" :
          n -= 1
            break; 
        case "d" :
          n += 10
            break; 
        case "a" :
          n -= 10  
            break; 
    }
  }  
    return n
}

switch문을 이용해서 해결했다.
하지만 control이 늘어난다면 case도 늘어나고 결과 값과 break문도 늘어나서 코드가 너무 길어진다.


Solution 😆

Object의 hasOwnProperty를 사용하면 더 좋을 것 같다.

control이 늘어나는 경우, 아래 방법으로 작성하면 더 간단하게 작성할 수 있다!

function solution(n, control) {
    
    return ex27MovePosition(n, control);
}

function ex27MovePosition(position, controls) {
  const controlMap = {
    w: 1,
    s: -1,
    d: 10,
    a: -10
  };

  for (const control of controls) {
    if (controlMap.hasOwnProperty(control)) {
      position += controlMap[control];
    }
  }

  return position;
}
profile
프론트엔드 대장이 되어보쟈

0개의 댓글