-
728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/131705
제한사항
- 3 ≤ number의 길이 ≤ 13
- -1,000 ≤ number의 각 원소 ≤ 1,000
- 서로 다른 학생의 정수 번호가 같을 수 있습니다.
입출력 예
number result [-2, 3, 0, 2, -5] 2 [-3, -2, -1, 0, 1, 2, 3] 5 [-1, 1, -1, 1] 0 문제 풀이
function solution(number) { let result = 0; for (let i = 0; i < number.length - 2; i++) { for (let j = i + 1; j < number.length - 1; j++) { for (let k = j + 1; k < number.length; k++) { if (number[i] + number[j] + number[k] === 0) { result++; } } } } return result; }
배열에서 3개의 인덱스 합이 0이되어야하기 때문에 3개의 인덱스를 중복되지 않게 정해서 배열의 요소 개수만큼 순회한다.
여기서 length를 빼주는 이유는 그 아래 for 문이 돌고 있기 때문에 겹치는 요소가 있어서 중복 계산을 피하기 위해서 작성했다.
(안 빼줘도 통과는 됐다)
'코딩테스트, 알고리즘' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 (JS) (0) 2023.08.26 [프로그래머스] 이상한 문자 만들기 (JS) (0) 2023.08.23 [프로그래머스] 문자열 내 마음대로 정렬하기 (JS) (0) 2023.08.19 [프로그래머스] 크기가 작은 부분문자열 (JS) (0) 2023.05.07 [프로그래머스] 중복된 문자 제거 (JS) (0) 2023.03.26 댓글