팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (73)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (1)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • ArcitecturePattern
  • DFS
  • compose
  • 골드
  • 구현
  • 문자열
  • binding
  • 코틀린
  • flutter
  • 실버
  • Android
  • 이분탐색
  • CustomView
  • BFS
  • java
  • 프로그래머스
  • 하단네비게이션바
  • TestCode
  • 안드로이드
  • 해쉬맵
  • mvvm
  • 완전탐색
  • 자바
  • 의존성 주입
  • 백준
  • 정렬
  • programmers #프로그래머스
  • LEVEL2
  • programmers
  • Kotlin

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

프로그래머스 타겟 넘버
PS/programmers

프로그래머스 타겟 넘버

2022. 6. 27. 15:49

https://programmers.co.kr/learn/courses/30/lessons/43165

 

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

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

programmers.co.kr

[문제 설명]

 

 

 

DFS (깊이 우선 탐색)을 이용하여 음수 양수의 경우를 고려해 그래프 탐색을 해주면 됩니다.

 

 

 

  1. 시작점을 0으로한 dfs 시작
  2. 만약 리프 노드가 아니라면 idx+1을 해주고, 현재 노드의 값과 누적 합계를 더한다.
  3. 음수 양수 dfs를 돌려준다.
  4. 만약 리프 노드이면서 찾으려는 값을 찾았다면 count 값을 증가 한다.
  5. dfs가 종료 되고 나면 찾으려는 값 만큼 count 되어 있으므로 return 한다.

 

class Solution {
    int count;
    public int solution(int[] numbers, int target) {

     dfs(0,target, 0, numbers);

        return this.count;
    }

    public void dfs(int idx,int target, int sum, int[] numbers){
        if(idx == numbers.length){
            if(sum == target) this.count++;
            return;
        }
        dfs(idx + 1, target, sum + numbers[idx],numbers);
        dfs(idx + 1, target, sum - numbers[idx],numbers);
    }
}

'PS > programmers' 카테고리의 다른 글

Programmers - 피로도 (Java) 완전탐색  (0) 2022.08.10
[프로그래머스] 기능개발  (1) 2022.06.27
프로그래머스 두 개 뽑아서 더하기  (0) 2022.06.27
프로그래머스 실패율  (0) 2022.06.27
프로그래머스 1차 다트 게임  (0) 2022.06.27
    'PS/programmers' 카테고리의 다른 글
    • Programmers - 피로도 (Java) 완전탐색
    • [프로그래머스] 기능개발
    • 프로그래머스 두 개 뽑아서 더하기
    • 프로그래머스 실패율
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바