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으로 합쳐서 반환한다.
객체를 이용하여 푼 풀이가 참신하였고, 이를 통해서 더 깔끔하고 보기 쉽게 만들었던 풀이였다.