반응형
문제 출처 : www.acmicpc.net/problem/1182
1 . 문제 접근 방식
- 파이썬에서 combination을 활용할 수 있는 모듈을 받아 부분집합을 다 구한뒤 전체 원소를 돌며 합이 S와 같아지는 경우를 찾기
2 . 내가 푼 코드
from itertools import combinations
# N과 S를 입력 받음
N, S = map(int, input().split())
# N개의 수를 입력받아 list의 형태로 저장
arr = list(map(int, input().split()))
# count 값 0으로 초기화
count = 0
# 1부터 N까지의 숫자 사이의 모든 조합의 경우의 수 계산
for i in range(1, N+1):
num = list(combinations(arr, i))
# 모든 조합들의 합을 구하며 S와 같아지는 경우가 있는지 확인하여 있다면 count 1증가
for j in range(len(num)):
sum_num = sum(num[j])
if sum_num == S:
count += 1
# count 값 출력
print(count)
3 . 결과 및 느낀점
- 성공! for문에 대한 코드를 작성하면서 아직 range의 범위를 잘 이해하지 못한다는 생각을 했다. 조금 더 공부하고 마스터 해야겠다.
반응형
'개인 공부 > Algorithm' 카테고리의 다른 글
[개인공부] 알고리즘 공부 #1 (0) | 2021.04.05 |
---|---|
[개인공부] 알고리즘 공부 #Intro (0) | 2021.04.04 |
[Baekjoon/백준] 2231번 Python (0) | 2021.04.02 |
[Baekjoon/백준] 11721번 Python (0) | 2021.04.02 |
[Baekjoon/백준] 2750번 Python (0) | 2021.03.31 |