고득점 Kit - DFS & BFS (타겟 넘버)

2023. 4. 12. 12:44·📚 Data Architect/Programmers

💡 문제 파악

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이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.


제한사항

  • 주어지는 숫자의 개수는 2개 이상 20개 이하입니다.
  • 각 숫자는 1 이상 50 이하인 자연수입니다.
  • 타겟 넘버는 1 이상 1000 이하인 자연수입니다.

입출력 예

numbers target return
[1, 1, 1, 1, 1] 3 5
[4, 1, 2, 1] 4 2

풀이

public class Solution {
    static int answer = 0;

    public int solution(int[] numbers, int target) {
        // +1부터 시작
        dfs(numbers,numbers[0],target,0);
        // -1부터 시작
        dfs(numbers,-1*numbers[0],target,0);

        return answer;
    }

    void dfs(int[] numbers,int num, int target, int idx){
        // 뽑은 수가 5 개일때 타겟 넘버가 만들어졌다면 case ++
        if (idx==numbers.length-1) {
            if(num == target){
                answer++;
            }
            return;
        }
        idx++;
        // 더하기
        dfs(numbers,num+numbers[idx],target,idx);
        // 빼기
        dfs(numbers,num-numbers[idx],target,idx);
    }
}
저작자표시

'📚 Data Architect > Programmers' 카테고리의 다른 글

고득점 Kit - 완전탐색 (최소 직사각형)  (0) 2023.04.12
고득점 Kit - DFS & BFS (네트워크)  (0) 2023.04.12
고득점 Kit - 정렬 (H-index)  (0) 2023.04.12
고득점 Kit - 정렬 (가장 큰 수)  (0) 2023.04.12
고득점 Kit - 정렬 (K번째 수)  (0) 2023.04.12
'📚 Data Architect/Programmers' 카테고리의 다른 글
  • 고득점 Kit - 완전탐색 (최소 직사각형)
  • 고득점 Kit - DFS & BFS (네트워크)
  • 고득점 Kit - 정렬 (H-index)
  • 고득점 Kit - 정렬 (가장 큰 수)
신건우
신건우
조용한 개발자
  • 신건우
    우주먼지
    신건우
  • 전체
    오늘
    어제
    • 분류 전체보기 (422)
      • 📘 Frontend (71)
        • Markup (1)
        • Style Sheet (2)
        • Dart (8)
        • Javascript (12)
        • TypeScript (1)
        • Vue (36)
        • React (2)
        • Flutter (9)
      • 📘 Backend (143)
        • Java (34)
        • Concurrency (19)
        • Reflection (1)
        • Kotlin (29)
        • Python (1)
        • Spring (42)
        • Spring Cloud (5)
        • Message Broker (5)
        • Streaming (2)
        • 기능 개발 (5)
      • 💻 Server (6)
        • Linux (6)
      • ❌ Error Handling (11)
      • 📦 Database (62)
        • SQL (31)
        • NoSQL (2)
        • JPQL (9)
        • QueryDSL (12)
        • Basic (4)
        • Firebase (4)
      • ⚙️ Ops (57)
        • CS (6)
        • AWS (9)
        • Docker (8)
        • Kubernetes (13)
        • MSA (1)
        • CI & CD (20)
      • 📚 Data Architect (48)
        • Data Structure (10)
        • Algorithm (8)
        • Programmers (17)
        • BaekJoon (5)
        • CodeUp (4)
        • Design Pattern (4)
        • AI (0)
      • ⚒️ Management & Tool (8)
        • Git (7)
        • IntelliJ (1)
      • 📄 Document (10)
        • Project 설계 (6)
        • Server Migration (3)
      • 📄 책읽기 (2)
        • 시작하세요! 도커 & 쿠버네티스 (2)
      • 🎮 Game (4)
        • Stardew Vally (1)
        • Path of Exile (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      Lock #Thread #Concurrency
      GStreamer #Pipeline
      React #Markdown
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.0
    신건우
    고득점 Kit - DFS & BFS (타겟 넘버)
    상단으로

    티스토리툴바