[사전 코스] Programmers - 삼총사

Kim Hyen Su·2024년 3월 14일
0

⏲️ 알고리즘

목록 보기
86/95

삼총사 : 문제 링크

해당 문제는 3중 for문을 통해서 구현한 문제입니다.

해당 문제를 풀때 3중 for문까지 돌릴 생각이 나질 않아서, 결국 풀지 못했습니다.

처음에는 3중 for문을 돌리게되면, [ -2, 0, 2 ] 와 [ 2, 0, -2] 의 경우에 횟수가 중복되어 카운팅 되지 않을까라는 고민도 했지만,

사실 for문을 다음과 같이 구현하면 이전에 카운팅했던 케이스가 다시 나올 일은 없습니다.

		int len = 정수;
        
        for(int i=0; i<len-2; i++){
            for(int j=i+1; j<len-1; j++){
                for(int k=j+1; k<len; k++){
                    
                }
            }
        }
        // 012, 013, 014, 015, 022, 023, 024, 025, 032 ...

위 주석처럼 한번 확인한 케이스에 대해서는 다시 확인하는 일이 없기 때문에 확실하게 확인이 가능합니다.

위 문제의 입출력 예를 들어 설명하면, 다음과 같습니다.

input
number = [-2,3,0,2,-5] => output : 2

//3중 for문
...

(-2,3,0) (-2,3,2) (-2,3,0) (-2,3,-5) (-2,0,2) (-2,0,-5) (-2,2,-5)
(3,0,2) (3,0,-5) (3,2,-5) (0,2,-5) 

😀 성공

class Solution {
    public int solution(int[] number) {
        int answer = 0;
        
        int len = number.length;
        
        for(int i=0; i<len-2; i++){
            for(int j=i+1; j<len-1; j++){
                for(int k=j+1; k<len; k++){
                    int sum = number[i] + number[j] + number[k];
                    if(sum == 0){
                        answer++;
                    }
                }
            }
        }
        
        return answer;
    }
}
profile
백엔드 서버 엔지니어

0개의 댓글