devlog_owen
[프로그래머스] 삼총사 본문
문제
배열 안의 요소들 중에 조건을 넣어서 추출하는 방법
=??????????????????????
나의 풀이
function solution(number) {
const n = number.length;
let threeMemCount = 0;
for (let i = 0; i < n - 2; i++) {
for (let j = i + 1; j < n - 1; j++) {
for (let k = j + 1; k < n; k++) {
const sum = number[i] + number[j] + number[k];
if (sum === 0) {
threeMemCount++;
}
}
}
}
return threeMemCount;
}
1. 변수 n에 배열 길이 저장. 배열길이 = 학생 수
const n = number.length;
2. 카운트변수를 0으로 초기화. threeMemCount =삼총사 만드는 방법의 경우의 수
let threeMemCount = 0;
3. 3중 for문으로 배열에서 3명 학생 선택하는 모든 경우의 수를 찾음.
for (let i = 0; i < n - 2; i++) {
for (let j = i + 1; j < n - 1; j++) {
for (let k = j + 1; k < n; k++) {...
첫번째 루프 i는 첫번째 학생을 선택, j는 두번째, k는 세번째 학생을 찾음.
+1 해주는 거는 각각 그 전 학생 이후의 학생만 선택 가능하기 때문.
4. 각 루프에서 선택한 학생 번호 사용해서 합을 계산하고 합은 sum에 저장
const sum = number[i] + number[j] + number[k];
5. sum 변수 값이 0이면 (세명 더해서 0) threeMemCount 변수를 1 증가시킴.
if (sum === 0) { threeMemCount++; }
6. threeMemCount 반환.
다른 사람 풀이
내 풀이랑 비슷함
회고
이 문제는 정말 접근방법부터 생각이 안났다. 무슨 내가 못푸는 수학문제를 만난 기분이었다.
3중 for문은 처음이었다. 이게 이 문제의 거의 핵심이었다. 공부해야겠음
'algorithm > (js)프로그래머스' 카테고리의 다른 글
[프로그래머스] 이상한 문자 만들기 (0) | 2023.11.05 |
---|---|
[프로그래머스] 최소직사각형 (0) | 2023.11.05 |
[프로그래머스] 3진법 뒤집기 (0) | 2023.11.05 |
[프로그래머스] 예산 (0) | 2023.11.05 |
[프로그래머스] 같은 숫자는 싫어요 (0) | 2023.11.02 |