본문 바로가기
코딩테스트/LV. 1

LV1 :: 삼총사

by KUROMI98 2023. 10. 8.

https://school.programmers.co.kr/learn/courses/30/lessons/131705

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(number) {
    let samchongsa = [];
    var samchongsalist = [];
    let sum = 0; 
    let sumarr = [];
    let result = 0;
    
    for (i=0; i<number.length; i++){ 
        for (j=0; j<number.length; j++){ 
        if (i!=j){
            for (k=0; k<number.length; k++){ 
            if ((j!=k)&(k!=i)){
                samchongsa.push(number[i]);
                samchongsa.push(number[j]);
                samchongsa.push(number[k]); // samchongsa = [-2, 3, 0]
                samchongsalist.push(samchongsa); // samchongsalist = [ [2, 3, 0], [2, 3, 1], ..]
                samchongsa = [];
            }
            } 
        }
        } 
    }
    
    for (i=0; i<samchongsalist.length; i++){
        sum = samchongsalist[i].reduce((a, b) => a + b, 0);
        sumarr.push(sum); // sumarr = [1, 3, 4, 0, -1 ..]
    } 
    
    for (i=0; i<sumarr.length; i++){
        if (sumarr[i]==0) result++; // sumarr에 0이 있을때마다 result를 1씩 증가시킨다
    }
    
    return result/6; // 6으로 나눠주는 이유? 6=3C2라서. 정확히 말하자면 2,0,-5의 조합과 -5,2,0의 조합은 똑같은데 안 걸러지잖아. 이렇게 걸러져야 할 게 6배가 나온다고.
}

'코딩테스트 > LV. 1' 카테고리의 다른 글

LV1 :: 푸드 파이트 대회  (0) 2023.10.09
LV1 :: 가장 가까운 같은 글자  (0) 2023.10.08
LV1 :: 크기가 작은 문자열  (0) 2023.10.08
LV. 1 :: [1차] 비밀지도  (0) 2023.02.01
LV. 1 :: 키패드 누르기  (0) 2023.02.01

댓글