반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Singleton
- zwj
- Android
- dart
- 알고리즘
- Lazy
- 플러터 동작
- 거리알고리즘
- Widget Tree
- 프리즈드
- 재귀
- 프로그래머스
- dfs
- 자바
- Java
- 플러터
- 초기화
- 비동기 처리
- linebreak
- 완전탐색
- 에러
- Kotlin
- 자료구조
- flutter
- element tree
- IOS
- 앱아이콘 변경
- 코틀린
- Render object tree
- 싱글톤
Archives
- Today
- Total
모바일 개발하는 자바리안의 메모장
자바(JAVA) - 타겟 넘버(Programmers : 43165) 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/43165
DFS 알고리즘을 사용하여 입력값의 덧,뺄셈에 대한 모든 결과값을 확인할 수 있었음.
재귀 함수를 구현하였으며, 각 연산에 대한 재귀호출 + 예외처리 + 정답에 대한 조건문만으로 쉽게 풀 수 있었던 문제.
실행 순서는 다음과 같다 :
1. 초기값을 넘겨 dfs 재귀함수 호출
2. 다음 index 값 & result값을 넘기며 덧셈 & 뺄셈에 대한 재귀 호출
3. 배열의 마지막 값까지 확인했을 경우, result값이 target값과 동일할 경우 answer 값 증가
4. answer 반환
<코드>
import java.util.*;
class Solution {
int answer = 0;
public int solution(int[] numbers, int target) {
// dfs 함수 호출
dfs(numbers, 0, 0, target);
return answer;
}
// 나올 수 있는 모든 값들을 구하기 위한 재귀 함수
public void dfs(int[] numbers, int index, int ret, int target) {
// 모든 배열 값들에 대한 연산을 마쳤을 경우
if(numbers.length == index){
// 타겟 넘버가 1 미만일 경우에 대한 예외처리
if(ret < 1)
return;
// target값과 동일할 경우 count 증가
if(ret == target)
answer++;
return ;
}
// 덧셈 & 뺄셈 에 대한 재귀호출
dfs(numbers, index + 1, ret + numbers[index], target);
dfs(numbers, index + 1, ret - numbers[index], target);
}
}
반응형
'Java > Java.algorithm' 카테고리의 다른 글
자바(JAVA) - 땅따먹기(Programmers : 12913) (0) | 2021.06.10 |
---|---|
자바(JAVA) - 크레인 인형뽑기 게임(Programmers : 64061) (0) | 2021.06.10 |
자바(JAVA) - 모두 0으로 만들기(Programmers : 76503) (0) | 2021.06.10 |
자바(JAVA) - 게임 맵 최단거리(Programmers : 1844) (0) | 2021.06.10 |
자바(JAVA) - 모의고사(Programmers : 42840) (0) | 2021.06.10 |
Comments