728x90
문제 설명
한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다.
이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다.
예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때,
첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다.
또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다.
따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.
한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때,
학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.
제한 사항
- 3 ≤ number의 길이 ≤ 13
- -1,000 ≤ number의 각 원소 ≤ 1,000
- 서로 다른 학생의 정수 번호가 같을 수 있습니다.
입출력 예
number | result |
[-2, 3, 0, 2, -5] | 2 |
[-3, -2, -1, 0, 1, 2, 3] | 5 |
[-1, 1, -1, 1] | 0 |
문제 풀이 방법
- 이 문제를 가만히 보면 각 숫자마다 다른 숫자들과의 합을 고려하는 방법으로 풀어야 겠다 생각했다.
- 그리고 DFS 깊이 우선 탐색이 어울린다 생각해서 풀어봤다.
- 각 깊이마다 숫자를 선언해주고 선언해준 숫자들을 전부 더했을 때 0이 나오면 answer에 1을 더해줬다.
- 그리고 끝나면 answer는 3개의 숫자의 합이 0이 나오는 경우의 수를 갖게된다.
내가 작성한 코드
const solution = (number) => {
// 깊이 우선 탐색 dfs
let answer = 0;
for(let i=0; i<number.length; i++){
const n1 = number[i];
for(let j=i+1; j<number.length; j++){
const n2 = number[j];
for(let k=j+1; k<number.length; k++){
const n3 = number[k];
if(n1+n2+n3 === 0){
answer +=1;
}
}
}
}
return answer;
}
728x90
'코딩 테스트 > 프로그래머스 코딩 테스트 연습' 카테고리의 다른 글
1Level / 연습문제 / 콜라츠 추측 (0) | 2022.10.25 |
---|---|
1Level / 연습문제 / 평균 구하기 (0) | 2022.10.25 |
1Level / 연습문제 / 수박수박수박수박수박수? (0) | 2022.10.24 |
1Level / 연습문제 / 하샤드 수 (0) | 2022.10.13 |
1Level / 연습문제 / 2016년 (0) | 2022.10.10 |