문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120839
답안1 (for문 if 노가다)
function solution(rsp) {
let str = rsp.split('')
let answer = ""
for (let i = 0; i <= str.length; i++) {
if (str[i] === "2") answer += "0"
else if (str[i] === "0") answer += "5"
else if (str[i] === "5") answer += "2"
}
return answer
}
- 일단 rsp라는 가위바위보가 담긴 파라미터가 문자열로 들어온다. 이를 split으로 쪼개서 하나하나 배열로 만들어준다.
- 그리고 if로 하나씩 전부 비교한다.
- 문자열을 만들어 출력해준다.
답안2 (스프레드 연산자 + 객체 풀이)
function solution(rsp) {
let answer = {
"0": "5",
"2": "0",
"5": "2"
}
return [...rsp].map(e => answer[e]).join('')
}
- 객체의 키값쌍을 이용해 문제를 해결할 것이다.
(받을 문자열 파라미터는 결국 답과 상응하는 템플릿과 다를 바 없음을 이용한다.) - 이 때 rsp로 받는 인자는 문자열이므로, 위와 같이 스프레드 연산자로 뿌려주어 배열화 한다.
- 여기에 map 고차함수를 붙여준다. map은 자신을 호출한 배열과 동일한 length를 가진 배열을 return한다.
- 만약 0, 2, 5를 가지고 있을 경우 순차적으로 answer[0], answer[2], answer[5]를 배열의 엘리먼트로 채워줄 것이므로
[5, 0, 2] 이 만들어진다. - 이것을 join('') 메서드를 통해 문자열로 만들어준다.
- 최종적으로 문제가 원하는 답안이 리턴된다.
'코테 문제 풀이' 카테고리의 다른 글
[레벨 0] 외계행성의 나이 (문자열 - 배열 - 문자열) (0) | 2022.12.17 |
---|---|
[레벨 0] 배열 회전시키기 (pop, push, shift, unshift) (1) | 2022.12.17 |
[레벨 0] 배열의 유사도 (이중 for문, 메서드) (0) | 2022.12.09 |
[레벨 0] 특정 문자 제거하기 (for문, replaceAll, 정규표현식) (0) | 2022.12.08 |
[레벨 0] 문자열 뒤집기 (0) | 2022.12.07 |