Javascript/자바스크립트 문제

[Javascript : programmers] 수 조작하기 1, 2 (Lv.0)

isfp_yykkng 2024. 8. 3. 13:23

[Javascript : programmers] 수 조작하기 1, 2 (Lv.0)

문제) 수 조작하기 1

나의 정답 풀이

function solution(n, control) {
    control = control.split('')
    for(let e of control){
        if(e == 'w') n++
        else if(e == 's') n--
        else if(e == 'd') n += 10
        else n -= 10
    }
    return n
}

 

control문자열을 배열로 만든 후 배열을 for of문으로 순회하면서 각 원소의 문자대로 로직을 수행하여 n을 반환한다.


문제) 수 조작하기 2

나의 정답 풀이

function solution(numLog) {
    let answer = ''
    for(let i=0; i<numLog.length-1; i++){
        if(numLog[i+1] - numLog[i] == 1) answer += 'w'
        else if(numLog[i+1] - numLog[i] == -1) answer += 's'
        else if(numLog[i+1] - numLog[i] == 10) answer += 'd'
        else answer += 'a'
    }
    return answer
}

 

for문으로 numLog의 앞뒤를 빼면서 더해지고 빼진 값에 따른 연산으로 w, s, d, a를 answer에 더한다.

다른 사람 풀이

function solution(numLog) {
    const convert = {
        '1': 'w', '-1': 's', '10': 'd', '-10': 'a'
    };

    return numLog.slice(1).map((v, i) => {
        return convert[v - numLog[i]]
    }).join('')
}

 

convert 객체를 통해서 연산이 이뤄진 값(1, -1, 10, -10)을 각각 w,s,d,a,로 key-value 설정한다. 그리고 map으로 numLog 배열을 순환하면서 현재 값에서 연산을 뺀 것에 대한 value값을 join으로 합쳐서 반환한다. 

 

객체를 이용하여 푼 풀이가 참신하였고, 이를 통해서 더 깔끔하고 보기 쉽게 만들었던 풀이였다.