문제
https://school.programmers.co.kr/learn/courses/30/lessons/131705
나의 풀이
class Solution {
int answer = 0;
public int solution(int[] number) {
int n = number.length;
boolean[] visited = new boolean[n];
comb(number, visited, 0, n, 3);
return answer;
}
private void comb(int[] arr, boolean[] visited, int depth, int n, int r) {
if (r == 0) {
sumNumber(arr, visited, n);
return;
}
if (depth == n) {
return;
}
visited[depth] = true;
comb(arr, visited, depth + 1, n, r - 1);
visited[depth] = false;
comb(arr, visited, depth + 1, n, r);
}
void sumNumber(int[] arr, boolean[] visited, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
if (visited[i]) {
sum += arr[i];
}
}
if (sum == 0) {
answer++;
}
}
}
문제 보자마자 생각한 풀이는 조합이였다. nC₃ 을 구하면 된다는 생각으로 조합 알고리즘부터 짜고 3개의 합이 0일 때의 경우를 골라낸다.
'알고리즘 & 문제 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 나머지가 1이 되는 수 찾기(java) (0) | 2023.02.07 |
---|---|
[프로그래머스] 숫자 짝꿍(java) (0) | 2023.02.06 |
[프로그래머스] 콜라 문제(java) (0) | 2023.02.03 |
[프로그래머스] 옹알이(java) (0) | 2023.02.03 |
[프로그래머스] 푸드 파이트 대회(java) (0) | 2023.02.03 |