250x250
Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

devlog_owen

[프로그래머스] 삼총사 본문

algorithm/(js)프로그래머스

[프로그래머스] 삼총사

developer_owen 2023. 11. 5. 01:51
728x90

문제

 

 

배열 안의 요소들 중에 조건을 넣어서 추출하는 방법

=??????????????????????

 


 

 

나의 풀이

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문은 처음이었다. 이게 이 문제의 거의 핵심이었다. 공부해야겠음


 

 

 

 

728x90