가위는 2 / 바위는 0 / 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp
가
매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타내는 문자열을
return 하도록 solution 함수를 완성해보세요.
rsp | result |
---|---|
"2" | "0" |
"205 | "052" |
function solution(rsp) {
let result = '';
[...rsp].forEach(item => {
switch (item) {
case '2':
result += '0';
break;
case '0':
result += '5';
break;
case '5':
result += '2'
break;
}
})
return result;
}
인수로 전달 받은 rsp
를 스프레드 문법...
을 이용해 배열로 만든 후 forEach
또는 map
을 사용해
반복을 돌린다. forEach
를 호출한 배열의 요소(item)를 switch
에 전달하고 case
와 맞는 결과값을
result에 더해준다. item이 '2'이면 '0' / item이 '0'이면 '5' / item이 '5'이면 '2'를 더해준다.
그렇게 합쳐진 문자열을 return한다.
function solution(rsp) {
let arr = {
2: 0,
0: 5,
5: 2
};
var answer = [...rsp].map(v => arr[v]).join("");
return answer;
}
문제의 결과값은 서로 매칭이 되므로 함수 내부에 매칭이 될 Object를 선언하고
2: 0, 0: 5, 5:2의 프로퍼티를 생성한다.
그리고 인수로 전달받은 rsp를 스프레드 문법...
으로 배열을 만들고 return을 문자열로 만들어야하기
때문에 join() 메서드를 사용하고, join메서드는 배열이 있어야 하기 때문에 배열을 return하는 map을 사용한다.
그렇게 만들어진 문자열을 return한다.
다른사람의 문제 풀이를 보고..
이렇게 매칭이 가능한 상황에서는 Object를 사용하는 것도 좋아보인다.
아직 모든 문법을 조화롭게 사용하진 못하지만 여러 사람들이 풀이한 것을 보고 또 공부가되고
재미있다.