가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp
가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.
rsp
의 길이 ≤ 100rsp
와 길이가 같은 문자열을 return 합니다.rsp
는 숫자 0, 2, 5로 이루어져 있습니다.rsp | result |
---|---|
"2" | "0" |
"205" | "052" |
입출력 예 #1
입출력 예 #2
const solution = (rsp) => Array.from(rsp).map(x=>x==="2"?"0":x==="0");
/*
내가 처음 작성한 코드이다.
문자열 rsp를 입력 받아 각 문자를 순회하며 가위(2), 바위(0), 보(5)를 이기는 값을 반환하는 로직을
구현했다.
1. Array.from(rsp) : 입력받은 문자열 rsp를 배열로 변환한다.
예를 들어, "205"라는 문자열이 주어지면 ['2', '0', '5']라는 배열을 생성한다.
2. .map(x => x === "2" ? "0" : x === "0" ? "5" : "2")
map 함수는 배열의 모든 요소에 대해 제공된 함수를 호출하고, 그 결과로 새 배열을 생성한다.
만약 현재 요소(x)가 "2"(가위)라면, 이것을 이기는 값인 "0"(바위)으로 변경해준다.
만약 현재 요소(x)가 "0"(바위)라면, 이것을 이기는 값인 "5"(보)으로 변경해준다.
만약 현재 요소(x)가 위의 두 경우에 해당하지 않으면 (즉, 보인 경우),
이것을 이기는 값인 “2”(가위)로 변경한다.
최종적으로 map 함수의 결과값은 가위 바위 보 게임에서 승리하는 값을 나타내는 새로운 배열이 된다.
*/
const solution = (rsp) =>
rsp.split("").map(x=>x==="2"?"0":x==="0"?"5":"2").join("");
/* SOLUTION1과 비슷한 코드이다. Array.from으로 rsp의 문자열을 배열로 만들어 주었다면
SOLUTION2에서는 split을 통해 배열로 만들어 주었다. 두가지 방법 모두 사용할 수 있다.*/
/*
가위는 2 바위는 0 보는 5
*/
function solution(rsp) {
let arr = {
2: 0,
0: 5,
5: 2
};
var answer = [...rsp].map(v => arr[v]).join("");
return answer;
}
/*
다른 분이 풀이를 보다가 객체를 이용하여 사용하는 방법도 좋은거같아서 작성해보았다.
1. 이 함수는 주어진 가위 바위 보 게임에서 항상 승리할 수 있는 패턴의 문자열을 반환해준다.
2. answer 변수에 스프레드 문법으로 [...rsp]를 해주어 문자열을 배열로 변환한다.
3. .map(v => arr[v]): map 함수를 사용하여 배열의 각 요소에 대해 함수를 실행하고 결과값으로
새 배열을 생성한다. 여기서 함수 v => arr[v]는 현재 요소 v(가위, 바위, 보 중 하나)에 해당하는
승리하는 값을 찾아 반환한다.
4. .join(""): map 함수의 결과로 나온 배열을 다시 문자열로 변환한다.
*/
코테 연습 파이팅입니다 :)