Level.1
문제
풀이
class Solution {
static boolean[] visited = new boolean[13];
static int ans = 0;
public void dfs(int[] number, int idx, int sum, int count){
if(count == 3){
if(sum == 0)
ans++;
return;
}
for(int i=idx; i<number.length; i++){
if(!visited[i]){
visited[i] = true;
int s = sum + number[i];
dfs(number, i, s, count+1);
visited[i] = false;
}
}
}
public int solution(int[] number) {
int answer = 0;
dfs(number, 0, 0, 0);
answer = ans;
return answer;
}
}
DFS(깊이우선탐색)을 활용하여 숫자 3개의 조합(순서가 상관 없는 모임)을 만들었고,
그중 요소를 모두 합하면 0이 되는 조합이 나올 때마다 count + 1 해주었다.
다른 사람 풀이
class Solution {
public int solution(int[] number) {
int answer = 0;
for(int i=0; i<number.length-2; i++){
for(int j=i+1; j<number.length-1; j++){
for(int k=j+1; k<number.length; k++){
if(number[i]+number[j]+number[k]==0) answer++;
}
}
}
return answer;
}
}
3중for문을 활용한 풀이 방법이다!
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스] 제일 작은 수 제거하기 / Stream (0) | 2023.05.14 |
---|---|
[프로그래머스] 문자열 내 p와 y의 개수 / Stream , chars() , filter() (0) | 2023.05.06 |
[프로그래머스] 시저암호 / isLowerCase (0) | 2023.04.29 |
[프로그래머스] 문자열을 정수로 바꾸기 / valueOf , int와 Integer (0) | 2023.04.29 |
[프로그래머스] 가운데 글자 가져오기 - substring (0) | 2023.04.11 |