@Eeap
velog
@Eeap
전체 방문자
오늘
어제
  • 전체 (168)
    • osam (1)
    • Cloud (21)
      • Docker (2)
      • AWS (13)
    • AI & Data (7)
    • Algorithm (76)
      • Baekjoon (75)
      • Codeforces (1)
    • Language (18)
      • Java (18)
    • Back-end (17)
      • Spring (3)
      • JSP & Servlet (12)
      • Go (2)
    • 일상 (4)
    • 기타 (8)
    • git (1)
    • Infra (9)
      • Apache Kafka (5)
      • Kubernetes (4)
      • 기타 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • java
  • AWS CodeStar
  • SageMaker
  • converse api
  • sagemaker unified studio
  • CLASS
  • flink
  • 심폴릭링크
  • bedrock
  • bedrock agent
  • Agent
  • 티스토리챌린지
  • Python
  • AWS CodeCatalyst
  • 인터페이스
  • AWS CodeArtifact
  • invokemodel api
  • bedrock api
  • 오블완
  • knowledge bases

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
@Eeap

velog

Algorithm/Baekjoon

Python 1182번 부분수열의 합

2022. 7. 31. 04:33
반응형

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

 

1182번: 부분수열의 합

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

www.acmicpc.net

 

이 문제는 재귀 방식을 이용한 브루트 포스 방식으로 문제를 풀었다.

문제에서 조건이 크기가 양수인 부분 수열이기 때문에 수열의 크기가 0보다 크고 합이 s와 같을 경우에 cnt라는 리스트에 저장하도록 하여 cnt리스트의 개수가 출력되도록 하였다.

import sys
cnt=[]
input=sys.stdin.readline
def recur(i,res,sum,s,n):
    if sum==s and len(res)>0:
        cnt.append(0)
    for idx in range(i,n):
        res.append(ary[idx])
        sum+=ary[idx]
        recur(idx+1,res,sum,s,n)
        res.pop()
        sum-=ary[idx]

n,s = map(int,input().split())
ary = list(map(int,input().split()))
recur(0,[],0,s,n)
print(len(cnt))

 

반응형
저작자표시 (새창열림)

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

Python 14225번 부분수열의 합  (0) 2022.08.01
Python 2529번 부등호  (0) 2022.07.31
Python 6603번 로또  (0) 2022.07.29
Python 1759번 암호 만들기  (0) 2022.07.28
2096번 파이썬  (0) 2022.05.04
    'Algorithm/Baekjoon' 카테고리의 다른 글
    • Python 14225번 부분수열의 합
    • Python 2529번 부등호
    • Python 6603번 로또
    • Python 1759번 암호 만들기
    @Eeap
    @Eeap

    티스토리툴바