기초다지기/JS 코딩테스트

[Lv0] 해당 문자열을 수로 변경하기

김빵그 2023. 5. 10. 10:34

! 문제

해당 문자열 w, s,d, a 에 각 +1, -1, +10, -10을 하여 문자열 control에 따른 return 값을 구하는 방법

  • 보자마자 기초 트레이닝인데, 오랜만에 해서 그런가... 약간 뇌정지 오는 기분이었다. for문으로 돌리려다 그냥 map 써서 짧게 가자는 생각으로 코딩 

내 답

function solution(n, control) {
    var arr = control.split("").map((i) => i == "w" ? +1 : i == "s" ? -1 : i == "d" ? +10 : -10);
    return n + arr.reduce((a,b) => a+b);
}
  • control.split("") : string 값을 [...] 텍스트 하나씩 잘라 배열에 넣어준다
  • map() : 배열값 하나하나씩 비교를 해준다 w 일때 +1, s일때 -1... 
  • reduce() : 배열에 있는 정수 모두 더하기 

총평

가독성을 포기하고... 코드를 짜버렸다! 변수명 arr를 좀 더 명확한 이름을 지으면 좋겠다. 삼항 연산자는 짧은 코딩이긴 하지만 가독성면에서 좋진 않다... 3개면 몰라도 여러개가 되니까.. 헷갈리긴 한다

 

그 외 답

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

    return answer;
}
  • for문을 사용하여 텍스트 control길이 만큼 루프 시킨다
  • 초기값 n에 첫글자부터 계속 더해준다 map[w] : +1 .... 
  • 삼항 연산자보다 가독성 높은 코드