티스토리 뷰
https://programmers.co.kr/learn/courses/30/lessons/43165?language=java
코딩테스트 연습 - 타겟 넘버 | 프로그래머스
n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘
programmers.co.kr
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
|
class Solution {
static int answer = 0;
public int solution(int[] numbers, int target) {
dfs(numbers, target, 0);
return answer;
}
public static void dfs(int[] numbers, int target, int node) {
if(node == numbers.length) {
int sum = 0;
for(int num : numbers) {
sum += num;
}
if(sum == target) {
answer++;
}
} else {
numbers[node] *= 1;
dfs(numbers, target, node+1);
numbers[node] *= -1;
dfs(numbers, target, node+1);
}
}
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
DFS, BFS에 대한 개념을 먼저 익히고 푸는게 좋은듯 싶다
(라고 상상함 하지만 어림도 없지ㅋㅋ 좀 더 익숙해지는 연습을 해야겠다...)

DFS는 stack, 재귀함수로 구현할 수 있고,
BFS는 queue로 구현 가능하다
이제 저걸 코드로 풀어서 응용만 하면 되는데 쉽지 않았다 (뇌굳남, 뇌가 굳어버린 남자)
1) DFS를 활용해 해당 node의 숫자를 (+), (-)로 배열에 넣어준다. (Tree로 보면 한쪽엔 (+), 다른쪽엔 (-))
2) node가 해당 배열까지 탐색했다면, numbers 배열을 다 더한다.
3) target과 비교해서 일치하면 카운트 +1, 아니면 다시 탐색 후 반복
'기초CS > 알고리즘' 카테고리의 다른 글
[프로그래머스] 알고리즘 연습 문제 : 주식가격 (자바/JAVA) (0) | 2019.12.01 |
---|---|
[프로그래머스] 알고리즘 연습 문제 : 프린터 (자바/JAVA) (0) | 2019.11.28 |
[프로그래머스] 알고리즘 연습 문제 : 쇠막대기 (자바/JAVA) (0) | 2019.09.06 |
[프로그래머스] 알고리즘 연습 문제 : 위장 (자바/JAVA) (0) | 2019.09.06 |
[Codility] Lesson 3 : FrogJmp (자바/JAVA) (0) | 2019.08.18 |
- Total
- Today
- Yesterday
- 문자열 내 마음대로 정렬하기
- 카카오인턴
- 완주하지 못한 선수
- FrogJmp
- java
- 맵 api
- Spring
- 텔레그램
- 타겟 넘버
- AWS
- 자바
- 다음 맵 api
- cgv
- 예매 알림
- 알고리즘
- 124 나라의 숫자
- 더 나은 내일
- 기능개발
- 파이팅코리아
- 프로그래머스
- 스프링 부트
- 최솟값
- 노션트렐로광고X
- 쇠막대기
- API
- K번째수
- 안드로이드 스튜디오
- json
- codility
- 객체지향과 디자인패턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |