기초다지기/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 ....
- 삼항 연산자보다 가독성 높은 코드