코딩테스트

[프로그래머스] 가위 바위 보

john-lennon 2026. 5. 31. 17:42

문제 설명

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

 

제한사항

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

입출력 예

rsp result
"2" "0"
"205" "052"

 


 

나의 코드

function solution(rsp) {
    let answer = "";
  
    for (let i = 0; i < rsp.length; i++) {
        
        if (rsp[i] === "2") {
            answer += "0";
        } else if (rsp[i] === "0") {
            answer += "5";
        } else if (rsp[i] === "5") {
            answer += "2";
        }
        
    }
    return answer;
}

 

방식

1. rsp는 문자열이므로 for문을 사용해 한 글자씩 순회한다.

2. 현재 문자가 "2", "0", "5" 중 무엇인지 if문으로 확인한다.

3. 각 경우에 이기는 값을 문자열 answer에 이어붙인다.

4. 반복이 끝나면 완성된 answer 문자열을 반환한다.

 


 

다른 사람의 코드

function solution(rsp) {
    let arr = {
        2: 0,
        0: 5,
        5: 2
    };
    var answer = [...rsp].map(v => arr[v]).join("");
    return answer;
}

 

나의 코드와 차이점

1. 객체에 규칙을 저장해두고 조건문 없이 값을 조회

2. 전개연산자를 사용해 문자열을 배열로 만든 후 map()으로 순회

 


 

느낀점

객체를 활용해 변환 규칙을 미리 저장하고 필요한 값을 바로 조회하는 방법을 잘 응용해야겠다는 생각이 들었따. 앞으로는 문제를 풀 때 단순히 조건문만 생각하기보다 객체를 활용하여 규칙을 관리할 수 있는지 함께 고민해봐야겠다고 느꼈다.