내 맘대로 공부
article thumbnail

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

 

ex) 입출력 예시

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

 

Thinking Process

단순하게는 for 구문으로 if 문 여러 개를 두어 풀면 된다는 생각이 들었는데 그럼 당연히 고차함수를 사용할 수 있을 것 같고,,  그럼 모든 요소에 적용시킬 수 있는 map을 이용해서 if문으로 풀면 되겠다 !

 

 

Code

case1) 단순한 for문과 if 문

function solution(rsp) {
    let arr = [];

    for(let i=0; i<rsp.length; i++) {
        if(rsp[i] === "2") arr.push("0")
        if(rsp[i] === "0") arr.push("5")
        if(rsp[i] === "5") arr.push("2")  
    }

    return arr.join('')
}

 

case2) 고차함수

function solution(rsp) {
    return rsp.split("").map((el) => el==="2" ? 0 : (el==="0" ? 5 : 2)).join("")
}

 

당연히 시간은 고차함수가 7초나 더 빠르다 !!! 

 

 

Another Code

function solution(rsp) {
  let arr = {
    2: 0,
    0: 5,
    5: 2,
  };

  const answer = [...rsp].map((v) => arr[v]).join('');
  return answer;
}

spread 문법을 사용할 생각은 못했는데 이 코드가 훨씬 가독성이 좋은 것 같다  대박

profile

내 맘대로 공부

@곰도리도리잼

잘못된 정보가 있다면 알려주세요 🧸