728x90
▶문제 : 코딩 테스트 연습 - 삼총사 | 프로그래머스 스쿨 (programmers.co.kr)
▶코드 작성
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// number_len은 배열 number의 길이입니다.
int solution(int number[], size_t number_len) {
int answer = 0;
for (int i = 0; i < number_len - 2; i++) {
for (int j = i + 1; j < number_len - 1; j++) {//i+1부터 시작
for (int k = j + 1; k < number_len; k++) {//j+1부터 시작
if (number[i] + number[j] + number[k] == 0) {//합이 0일 때
answer++;
}
}
}
}
return answer;
}
▶해석
number의 길이가 최대 13이므로 모든 경우의 수를 구해도 시간 초과가 없다고 생각할 수 있다.
따라서 3개의 for문으로 모든 경우의 수를 확인한다.
i=0부터 시작해서 j=i+1, k=j+1로 맞추어 중복 없이 차례대로 반복문을 돌린다.
i <number_len-2 조건을 작성하였는데 만약 i <number_len 라면 다음 반복문에서 j와 k가 number배열을 벗어난 자리를 가리킬 수 있으므로 앞에 2개의 원소를 남긴다는 생각으로 -2를 써준다.
728x90
'프로그래머스 > C' 카테고리의 다른 글
프로그래머스 Level 1 : 숫자 짝꿍 C언어 (0) | 2022.10.28 |
---|---|
프로그래머스 Level 1 : 콜라 문제 C언어 (0) | 2022.10.24 |
프로그래머스 Level 2 : 두 큐 합 같게 만들기 C언어 (0) | 2022.08.23 |
프로그래머스 Level 1 : 성격 유형 검사하기 C언어 (0) | 2022.08.20 |
프로그래머스 Level 2 : 올바른 괄호 C언어 (0) | 2022.07.24 |
댓글