[프로그래머스-자바스크립트] 가위 바위 보

호박이와 칼림바·2023년 10월 11일

프로그래머스) Level0

목록 보기
25/25
post-thumbnail

코딩테스트 입문 - 가위 바위 보 문제


📢 문제 설명

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.


⚠️ 제한사항

  • 0 < rsp의 길이 ≤ 100
  • rsp와 길이가 같은 문자열을 return 합니다.
  • rsp는 숫자 0, 2, 5로 이루어져 있습니다.

🔶 입출력 예

rspresult
"2""0"
"205""052"

🔸입출력 예 설명

입출력 예 #1
"2"는 가위이므로 바위를 나타내는 "0"을 return 합니다.

입출력 예 #2
"205"는 순서대로 가위, 바위, 보이고 이를 모두 이기려면 바위, 보, 가위를 순서대로 내야하므로 “052”를 return합니다.


💎 나의 풀이(reduce 함수)


/* 단순 반복 연산
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 연산을 한다.

profile
프론트엔드 개발자입니다.

0개의 댓글