티스토리 뷰
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+
programmers.co.kr
이문제는 DFS/BFS 카테고리에 있는 level2문제로 간단한 편이라고 할 수 있다. 요새 계속 알고리즘을 풀어도 실력이 느는것 같지 않길래 우선 카테고리부터 정복하자! 해서 시작했다.
풀이 방법도 딱히 없이 dfs로 -일때와 +일때를 나눠서 해결해주면 되는 문제였다.
package programers;
public class TargetNum {
static int answer;
public static void main(String[] args) {
int[] numbers = { 1, 1, 1, 1, 1 };
int target = 3;
dfs(0, 0,numbers,target);
System.out.println(cnt);
}
public static void dfs(int idx, int sum,int[] numbers,int target) {
//마지막까지 탐색했을때 target과 같다면 방법수 ++
if(idx==numbers.length){
if(sum==target) answer++;
return;
}
//+일때와 -일때 따로 가지쳐서 탐색
dfs(idx+1, sum + numbers[idx], numbers,target);
dfs(idx+1, sum - numbers[idx],numbers,target);
}
}
'CS공부 > 알고리즘&문제풀이' 카테고리의 다른 글
[프로그래머스]DFS:단어변환(java) (0) | 2020.06.09 |
---|---|
[프로그래머스]DFS:네트워크(java) (0) | 2020.06.04 |
[백준 14889]스타트와 링크/삼성 sw역량 테스트 기출(java) (0) | 2020.05.28 |
[백준 16234]인구이동(java) (0) | 2020.05.26 |
[SW Expert Academy 1767]프로세서 연결하기(java) (0) | 2020.05.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DP
- 운영체제
- 최소 스패닝 트리
- 프로그래머스
- websocket
- 코딩테스트
- 분리 집합
- OS
- Spring
- MST
- 자바
- sockjs
- 채팅
- Stomp
- BFS
- 완전탐색
- git
- Oracle
- 정렬
- java
- programers
- JavaScript
- Heap
- dfs
- 알고리즘
- SWEA
- 삼성 sw역량테스트
- Baekjoon
- 백준
- 삼성 sw역량 테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함