백준 1182. 부분수열의 합

2023. 9. 18. 12:00·백준

https://www.acmicpc.net/problem/1182

 

1182번: 부분수열의 합

첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.

www.acmicpc.net

from sys import stdin
input = stdin.readline

n, s = map(int, input().split())
arr = list(map(int, input().split()))
cnt = 0

def dfs(idx, tmp):
    global cnt
    if idx >= n:    # 현재 인덱스가 정수의 개수보다 크면 리턴
        return
    tmp += arr[idx] # 수열에 현재 인덱스의 정수를 더함
    if tmp == s:    # 그 수가 s라면 카운트
        cnt += 1
    dfs(idx+1, tmp) # 현재 인덱스의 정수를 더한 것
    dfs(idx+1, tmp-arr[idx]) # 현재 인덱스의 정수를 더하지 않은 것

    # 이렇게 두 갈래로 쭉쭉 가지치기를 해가서 모든 부분집합의 합을 보는 것!

dfs(0, 0)
print(cnt)

이해를 하지 못한 풀이

N, S = map(int, input().split())
num = list(map(int, input().split()))
cnt = 0
ans = []

def solve(start):
    global cnt
    if sum(ans) == S and len(ans) > 0:  # 목표값 찾았고, 적어도 하나 이상의 원소가 있으면
        cnt += 1
    for i in range(start, N):  # start부터 n-1까지의 수를 리스트에 추가
        ans.append(num[i])
        solve(i+1)
        ans.pop()

solve(0)
print(cnt)
저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 2573. 빙산  (0) 2023.09.20
백준 2468. 안전 영역  (0) 2023.09.20
백준 15649. N과 M (1)  (0) 2023.09.15
백준 9663. N-Queen  (0) 2023.09.15
백준 1181. 단어정렬  (0) 2023.09.14
'백준' 카테고리의 다른 글
  • 백준 2573. 빙산
  • 백준 2468. 안전 영역
  • 백준 15649. N과 M (1)
  • 백준 9663. N-Queen
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    개발자취업
    99클럽
    코딩테스트준비
    Til
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 1182. 부분수열의 합
상단으로

티스토리툴바