소토
소토의 기록하는 삶
소토
전체 방문자
오늘
어제
  • 분류 전체보기 (34)
    • Algorithm (34)
      • Problem (34)
    • Web (0)
    • ML & AI (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 직장인인강
  • 알고리즘
  • 문제
  • 패스트캠퍼스
  • 직장인자기계발
  • 코드스테이츠
  • 패캠챌린지
  • 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
  • 패스트캠퍼스후기
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
소토

소토의 기록하는 삶

Algorithm/Problem

[Programmers] 타겟넘버 - Java

2022. 2. 17. 16:30

Level 2

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수

programmers.co.kr

사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.

 

문제 풀이

DFS 문제

값을 빼고 재귀함수에 넣고, 값을 더해서 재귀함수에 넣어준다.

n이 주어진 숫자의 개수와 같아지면 target과 같은지 확인하고 맞으면 개수+1을 해준다.

 

코드

class Solution {
	public int count = 0;
	
	public void dfs(int res, int n, int[] numbers, int target) {
		if (n == numbers.length) {
			if (res == target) {
				count += 1;
			}
			return;
		}
		
		dfs(res-numbers[n], n+1, numbers, target);
		dfs(res+numbers[n], n+1, numbers, target);
	}
	
	public int solution(int[] numbers, int target) {
        dfs(0, 0, numbers, target);
        
        return count;
    }
	
}
728x90
저작자표시 (새창열림)

'Algorithm > Problem' 카테고리의 다른 글

[Programmers] 단어 변환 - Java  (0) 2022.02.18
[Programmers] 네트워크 - Java  (0) 2022.02.18
[Baekjoon] 14499번 : 주사위 굴리기 - Python  (0) 2022.02.14
[Baekjoon] 21610번 : 마법사 상어와 비바라기 - Python  (0) 2022.02.11
[Baekjoon] 14500 : 테트로미노 - Python  (0) 2022.02.10
    소토
    소토

    티스토리툴바