[파이썬/python] SWEA - 3752 가능한 시험 점수

2026. 5. 4. 12:05·알고리즘
반응형

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do


문제 설명

  1. N개의 문제가 주어진다.
  2. 각 문제마다 배점이 다르며, 틀리면 0점 맞으면 배점만큼의 점수를 받을 수 있다.
  3. 학생들이 받을 수 있는 점수의 경우의 수를 모두 구한다.

 


풀이

단순 true, false인 것을 보고 먼저 떠오른 것은 비트마스킹이었다.

 

하지만 문제의 조건에서 $N = 100$이기 때문에 $2^{100} = 10^{30}$만큼의 연산이 필요하게 되어 시간 초과가 발생하게 된다.

 

따라서 경우의 수를 압축할 수 있는 방법을 떠올렸고, Set을 사용해서 문제를 풀었다.

 

Set배열에 가능한 점수를 매번 넣어가며 완전탐색을 진행하면 중복값을 제외하고 검사가 가능하다.

 

N개의 원소를 순회하면서 set 배열에 들어있는 점수에 현재 원소의 값을 더해나간다.

 

이 경우 최악의 연산 횟수는 100*{현재까지의 점수 조합 개수}이다.

나올 수 있는 점수 조합의 개수는 $N^2$이므로 10000개이다.

 

즉 $100*10000 = 10^6$의 연산으로 문제 풀이가 가능했다.

 

문제가 너무 쉽게 풀려서, 이렇게 푸는 게 맞나 싶어서 다른 방식을 생각해 봤는데, 인덱스마다 방문 처리를 하는 방식으로도 풀릴 수 있을 것 같았다.

 

배점은 최대 1~100이므로 나올 수 있는 최대 점수인 10000까지 배열을 생성한 후

각 인덱스마다 N개의 원소를 정말탐색하며 num [i][j] = 1로 바꿔준다.

 

모든 탐색을 마치고 num배열을 정말탐색하여 경우의 수를 더한다.

 

이럴 경우에는 순수 $10^6$의 연산이 나오게 되는데 set방식은 그보다 더 적게 나오니까 내가 풀이한 방식이 시간복잡도 면에서 더 유리한 것 같긴 하다.


코드

for tc in range(1,int(input())+1):
    N = int(input())
    arr = list(map(int,input().split()))

    res = set([0])

    for i in arr:
        for j in list(res):
            res.add(i + j)
    print(f'#{tc} {len(res)}')

시간복잡도

  • 최악의 경우 $N = 10^2$, 조합의 개수 = $10^4$ 이므로 약 $O(10^6)$의 시간복잡도를 가진다.
반응형

'알고리즘' 카테고리의 다른 글

[파이썬/python] SWEA - 보급로  (0) 2026.05.01
[파이썬/python] SWEA - 26504 MST 만들기  (0) 2026.04.27
[파이썬/python] 백준 - 31778 PPC 만들기  (1) 2026.04.15
[파이썬/python] 백준 - 5625 페스트리  (0) 2026.04.13
[파이썬/python] 백준 - 17099 Contest  (0) 2026.04.10
'알고리즘' 카테고리의 다른 글
  • [파이썬/python] SWEA - 보급로
  • [파이썬/python] SWEA - 26504 MST 만들기
  • [파이썬/python] 백준 - 31778 PPC 만들기
  • [파이썬/python] 백준 - 5625 페스트리
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (175)
      • SW 마에스트로 (1)
      • 알고리즘 (130)
      • CS (13)
      • Java (6)
      • 자기개발 (18)
      • Infra (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    NACL
    알고리즘
    java
    completablefuture
    백준
    코딩테스트
    작심삼일 챌린지
    IGW/NAT
    Infra
    SW 마에스트로
    컴퓨터 구조
    SWEA
    async
    reverse proxy
    Redis
    python
    springboot
    인프런
    OS
    파이썬
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
[파이썬/python] SWEA - 3752 가능한 시험 점수
상단으로

티스토리툴바