기초다지기/JS 코딩테스트
javaScript 정수 배열에서 0 만들기
김빵그
2023. 11. 7. 15:18
문제
정수 배열 number가 매개변수로 주어질 때 3개의 수를 더해 0이 나올수 있는 수를 리턴하여라
나의 풀이
function solution(number) {
let count = 0;
const n = number.length;
for (let i = 0; i < n; i++) {
for (let j = i + 1; j < n; j++) {
for (let k = j + 1; k < n; k++) {
if (number[i] + number[j] + number[k] === 0) {
count++;
}
}
}
}
return count;
}
- count : 삼총사를 형성하는 방법의 수
- const n. : 입력 배열의 길이
- For
- 세개의 중첩된 for 루프를 사용하여 첫번째, 두번째, 세번째 학생부터 시작
- 세명의 학생 번호의 합이 0인지 확인
- count +1
다른 풀이
function solution(number) {
let result = 0;
const combination = (current, start) => {
if (current.length === 3) {
result += current.reduce((acc, cur) => acc + cur, 0) === 0 ? 1 : 0;
return;
}
for (let i = start; i < number.length; i++) {
combination([...current, number[i]], i + 1);
}
}
combination([], 0);
return result;
}
- combination
- 현재조합 current , 시작인덱스 start를 매개변수로 받는다
- 조합을 더한후 0 이면 result 1 증가
- for
- 시작 인덱스로부터 배열을 탐색하며 각 학생을 현재 조합인 current에 추가한다 그리고 다음 학생을 선택하기 위해 start를 1 증가
- combination([],0)을 호출하여 초기상태에서 모든 가능한 조합 탐색