[BOJ 길라잡이/Java] 13일차 #1182 부분수열의 합

2025. 4. 1. 15:36· Languages/Java
목차
  1. 알고리즘 분류

알고리즘 분류

- 브루트포스 알고리즘

- 백트래킹

 

주어진 수열의 부분수열 중 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 문제다.

문제를 보고 depth를 하나씩 더해나가면서 백트래킹으로 풀어야겠다

까지는 생각했는데 그걸 어떻게 구현해야 할지는 감이 안 왔다.

 

구글링 통해 알아낸 방법을 이해하려 노력했다.

import java.util.*;
import java.io.*;

class Main {
    static int N, S, cnt;
    static int[] arr;
    
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        S = Integer.parseInt(st.nextToken());

        arr = new int[N];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        dfs(0, 0);
        if (S == 0) cnt--; // 공집합 제외
        System.out.println(cnt);
                
    }

    public static void dfs(int depth, int sum) {
        if (depth == N) {
            if (sum == S) cnt++;
            return;
        }

        dfs(depth + 1, sum + arr[depth]); // 원소를 선택한 경우
        dfs(depth + 1, sum); // 원소를 선택하지 않은 경우
    }
}

 

이 함수는 모든 부분 수열을 탐색한다.

(2^N개의 조합을 체크)

선택 or 선택하지 않음의 2갈래로 분기하는 재귀

'Languages > Java' 카테고리의 다른 글

[BOJ 길라잡이/Java] 14일차 #9095 1, 2, 3 더하기  (0) 2025.04.06
[프로그래머스 고득점 Kit/Java] 기능개발  (0) 2025.04.02
[프로그래머스 고득점 Kit/Java] 같은 숫자는 싫어  (0) 2025.04.01
[BOJ 길라잡이/Java] 12일차 #6603 로또  (0) 2025.03.29
[프로그래머스 고득점 Kit/Java] 전화번호 목록  (0) 2025.03.29
  1. 알고리즘 분류
'Languages/Java' 카테고리의 다른 글
  • [BOJ 길라잡이/Java] 14일차 #9095 1, 2, 3 더하기
  • [프로그래머스 고득점 Kit/Java] 기능개발
  • [프로그래머스 고득점 Kit/Java] 같은 숫자는 싫어
  • [BOJ 길라잡이/Java] 12일차 #6603 로또
효딩
효딩
개ㄱ발은 기세다. 줄여서 객기.
hyoding개ㄱ발은 기세다. 줄여서 객기.
효딩
hyoding
효딩
전체
오늘
어제
  • 분류 전체보기 (245)
    • SKKU SW (30)
      • Computer Architecture (14)
      • Database (4)
      • Computer Network (3)
      • Operating System (7)
      • Mobile App Programming (2)
    • SuperCoding (68)
    • CS (8)
    • Web Programming (19)
    • Cloud (13)
    • Languages (45)
      • Python (8)
      • Java (37)
    • Supporters (8)
      • MoteMote (6)
      • NHN Cloud (2)
    • Certification (27)
      • Network Advisor (14)
      • ADsP (10)
      • Engineer Information Proces.. (3)
    • Finance (9)
      • 경제금융용어 (3)
    • Woori FISA (14)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 우리에프아이에스
  • 네트워크관리사2급 공부방법
  • 서버배포
  • 네트워크관리사 커트라인
  • 인프라
  • 우리FISA
  • 네트워크관리사 준비물
  • 코틀린
  • 우리fis아카데미
  • 네트워크관리사2급 필기
  • 서버생성
  • nhn cloud
  • 앱개발
  • 인프라개발
  • apppaas
  • 봐
  • 클라우드
  • rds local 접속
  • 네트워크관리사
  • K-디지털트레이닝
  • 네트워크관리사 후기
  • AWS
  • 서버개발
  • 코틀린문법
  • Kotlin
  • 네트워크관리사2급
  • 글로벌소프트웨어캠퍼스
  • 클라우드서비스개발
  • 클라우드 서비스
  • 네트워크관리사 합격

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
효딩
[BOJ 길라잡이/Java] 13일차 #1182 부분수열의 합
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.