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 문법을 사용할 생각은 못했는데 이 코드가 훨씬 가독성이 좋은 것 같다 대박
'Algorithm Solution > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] 외계행성의 나이 (0) | 2023.01.25 |
|---|---|
| [프로그래머스] 주사위의 개수 (0) | 2023.01.25 |
| [프로그래머스] 암호해독 (0) | 2023.01.24 |
| [프로그래머스] 세균 증식 (0) | 2023.01.24 |
| [프로그래머스] 제곱수 판별하기 (0) | 2023.01.19 |
