티스토리 뷰
프로그래머스 43165번 - 타켓 넘버
요구사항
1. n개의 음이 아닌 정수를 이용하여 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들 수 있는 방법의 수를 반환하라.
요구사항 분석 및 풀이과정
1. 주어진 정수를 순차적으로 더했을 경우와 뺐을 경우로 나누어 DFS 탐색을 진행하면 된다.
2. DFS 탐색의 탈출 조건은 주어진 정수를 모두 썼을 경우 탈출한다.
3. 주어진 정수를 모두 썼는데 타겟 넘버를 만들지 못한 경우는 0, 만들 수 있는 경우는 1을 반환하여 모든 경우를 구한다.
소스코드 작성
class Solution {
private int dfs(int[] numbers, int sum, int target, int depth) {
if (depth == numbers.length) {
return sum == target ? 1 : 0;
}
int v = numbers[depth];
return dfs(numbers, sum + v, target, depth + 1) + dfs(numbers, sum - v, target, depth + 1);
}
public int solution(int[] numbers, int target) {
return dfs(numbers, 0, target, 0);
}
}
결과
소스코드 깃허브 주소
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[알고리즘]프로그래머스 12939번 - 최댓값과 최솟값 (0) | 2022.01.09 |
---|---|
[알고리즘]프로그래머스 42842번 - 카펫 (0) | 2022.01.09 |
[알고리즘]프로그래머스 86491번 - 최소직사각형 (0) | 2022.01.06 |
[알고리즘]프로그래머스 72410번 - 신규 아이디 추천 (0) | 2022.01.06 |
[알고리즘]프로그래머스 12934번 - 정수 제곱근 판별 (0) | 2022.01.06 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- dp
- 비트연산
- dfs
- 스트림
- 알고리즘
- k8s
- JPA
- 탐욕법
- 코딩인터뷰
- set
- 우선순위큐
- BFS
- 스택
- 해쉬
- kotlin
- Uber
- 연결리스트
- Java
- dsu
- TDD
- 구현
- 코드 스니펫
- sql
- 오늘의집
- 쓰레드
- 프로그래머스
- 회고
- 문자열
- 카카오
- 정렬
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
글 보관함