[문제풀기] 프로그래머스 가위 방위 보

yeols·2023년 9월 21일
0

Algorithm

목록 보기
10/16
post-thumbnail

프로그래머스 가위 방위 보

문제 설명

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


입출력 예

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

입출력 예 설명

입출력 예 #1

  • "2"는 가위이므로 바위를 나타내는 "0"을 return합니다.

입출력 예 #2

  • "205"는 순서대로 가위 바위 보이고 이를 모두 이기려면 바위 보 가위를 순서대로 내야하므로
    "052"를 return 합니다.

나의 문제 풀이

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를 사용하는 것도 좋아보인다.
아직 모든 문법을 조화롭게 사용하진 못하지만 여러 사람들이 풀이한 것을 보고 또 공부가되고
재미있다.

profile
흠..

0개의 댓글