반응형
[프로그래머스] 깊이/너비 우선탐색(BFS/DFS) 타겟넘버
https://programmers.co.kr/learn/courses/30/lessons/43165
*재귀를 활용
package com.company;
public class TargetNumber {
static int TARGET = 3;
static int ANSWER_COUNT = 0;
public static void main(String[] args) {
int[] numbers = {1,1,1,1,1};
makeOperator(numbers, 0);
}
private static void makeOperator(int[] numbers, int k) { //k는 number의 index
if(k < numbers.length){
numbers[k] *=1;
makeOperator(numbers,k+1);
numbers[k] *=-1;
makeOperator(numbers,k+1);
}
else{
int sum=0;
for(int num: numbers){ sum += num; }
if(sum==TARGET) ANSWER_COUNT++;
}
}
}
두번째 풀기(2019. 04. 12)
이 글이 이 블로그 조회수 1위이다. 다시 풀어봤다.
public class Main {
static int answer=0;
static int TARGET=4;
public static void main(String[] args){
int[] numbers = {1, 3};
rec(numbers, 0, 0);
System.out.println(answer);
}
static void rec(int[] numbers, int sum, int index){
//종결
if(index == numbers.length){
if(sum==TARGET) answer++;
return
}
rec(numbers, sum+numbers[index], index+1);
rec(numbers, sum-numbers[index], index+1);
}
}
반응형
'알고리즘 > 문제풀이' 카테고리의 다른 글
[BFS] 이상한 계산기 (0) | 2018.10.18 |
---|---|
단지번호 붙이기 (0) | 2018.10.10 |
[재귀] 조합 (0) | 2018.10.04 |
[정렬] 주식가격 (0) | 2018.09.28 |
[정렬] 다리를 지나는 트럭 (0) | 2018.09.28 |