
가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
| rsp | result |
|---|---|
| "2" | "0" |
| "205" | "052" |
입출력 예 #1
"2"는 가위이므로 바위를 나타내는 "0"을 return 합니다.
입출력 예 #2
"205"는 순서대로 가위, 바위, 보이고 이를 모두 이기려면 바위, 보, 가위를 순서대로 내야하므로 “052”를 return합니다.
/* 단순 반복 연산
function solution(rsp) {
var answer = '';
let arr = rsp.split('');
for(v of arr) {
if(v === '2') answer += '0';
else if(v === '0') answer += '5';
else answer += '2';
}
return answer;
}*/
function solution(rsp) {
let obj = { '2': '0', '0': '5', '5': '2' };
return rsp.split('').reduce((prev, curr) => prev + obj[curr], '');
}
바로 이전에 풀었던 모스 부호 (1) 문제에 이어서 같은 유형을 풀은 결과
한 줄 연산 코드를 작성할 수 있었다.
주석처리한 부분은 단순하게 반복문을 통해서 조건문으로 answer 변수에다 문자열을 하니씩 더해준 결과를 반환한 것이다.
reduce() 함수를 이용한 연산 결과는 먼저 객체 하나를 만들어준다.
// 1. 가위: '2', 바위: '0', 보: '5'
// 2. 바위: '0', 보: '5', 가위: '2' → 1번의 가위바위보에 대적하여 이기는 것
let obj = {
'2': '0',
'0': '5',
'5': '2'
};
이렇게 객체를 정의하고서 reduce 연산을 한다.