개발자를 향해...
프로그래머스 -타겟 넘버 (java) 본문
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/43165
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수
programmers.co.kr
푸는데 엄청 오래 걸린 문제...
bfs나 dfs를 안쓰고 풀어서 정석대로 안푼거 같은데 일단 돌아가니깐....
class Solution {
public int solution(int[] numbers, int target) {
int answer = 0;
int[][] tree = new int [numbers.length][((int)Math.pow(2,numbers.length))];
tree[0][0] = -numbers[0];
tree[0][1] = numbers[0];
// System.out.println(tree[0].length);
for ( int i = 1; i < numbers.length; i++ ){
int c = 0;
for(int j=0; j<Math.pow(2,i); j++){
int parent = tree[i-1][j];
tree[i][c] = parent - numbers[i];
c++;
tree[i][c] = parent + numbers[i];
c++;
}
}
// for(int i = 0; i<tree.length; i++){
// for(int j=0; j<tree[i].length; j++){
// System.out.print(tree[i][j]+" ");
// }
// System.out.println("");
// }
for(int i :tree[numbers.length-1]){
if(i==target) answer++;
}
return answer;
}
}
원래 풀이는 dfs를 이용해 재귀함수로
return dfs( n+1) + dfs(n-1) ;
이런식으로 푸는거라고 한다 시간 텀을 두고 나중에 다시 풀어야겠다.
반응형
'코테 공부 > 프로그래머스master' 카테고리의 다른 글
프로그래머스 - 네트워크 (java) (0) | 2022.04.10 |
---|---|
프로그래머스 - k번째 수 (java) (0) | 2022.04.08 |
프로그래머스 - 타켓 넘버 (java) (2) | 2022.04.05 |