문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120824
답안
function solution(num_list) {
var answer = [0, 0]
for (ele of num_list) {
if(ele % 2 === 0) answer[0] += 1
else answer[1] += 1
}
return answer
}
- 인수로 받은 배열을 순회하며, 엘리먼트가 만약 짝수라면 정답 배열의 0번째 인덱스에 +1을,
아니라면 1번째 인덱스에 +1을 한다. - 끝.
괴답안(재귀함수 풀이)
function solution(num_list, 짝수 = 0, 홀수 = 0) {
if (num_list.length === 0) return [짝수, 홀수]
if (num_list[0] % 2 === 0) return solution(num_list.slice(1), 짝수 + 1, 홀수)
if (num_list[0] % 2 !== 0) return solution(num_list.slice(1), 짝수, 홀수 + 1)
}
- 한창 독학할때 for문을 쓸 줄 몰라서 모든 문제를 재귀함수로 풀었다.
- 그 때 풀었던 답안인데 왜 이렇게 했는지 참 모르겠다.
- 이 문제풀이방법에서는 slice 메서드를 공부할 수 있겠다.
Array.prototype.slice( [begin[, end]] )
- 어떤 배열의 begin 부터 end까지 (end 자체는 미포함한다. 즉, end - 1까지)
- 기존 배열에 대한 얕은 복사본을 새로운 객체 배열로 반환하는 메서드이다.
arr.slice([begin[, end]])
alice는 2개의 인자를 선택적으로 받을 수 있다.
- begin : slice할 시작점을 정한다. undefined일 경우 0번 인덱스부터 slice한다. (즉 변함이 없을 것이다.)
begin이 배열의 길이보다 긴 경우에는 빈 배열을 반환한다. - end : 추출을 종료할 기준 인덱스이다. begin부터 end -1 까지 추출한다.
end가 배열의 길이보다 길다면 begin부터 배열의 맨 끝까지 추출한다.
음수일 경우, 배열의 뒤쪽부터 셈하여 잘라낸다.
'코테 문제 풀이' 카테고리의 다른 글
[레벨 0] 특정 문자 제거하기 (for문, replaceAll, 정규표현식) (0) | 2022.12.08 |
---|---|
[레벨 0] 문자열 뒤집기 (0) | 2022.12.07 |
[레벨 0] 중복된 숫자 개수 (for of) (0) | 2022.12.06 |
[레벨 0] 짝수의 합 (0) | 2022.12.05 |
[레벨 0] 양꼬치 (0) | 2022.12.05 |