[SWEA] Q3752 가능한 시험 점수

Question

Language: Python

Difficulty: D4

1495 문제와 유사한 방식으로 풀어줄 수 있다.

input이 아래와 같은 경우

3
2 3 5

각 배점에 대해서 적용하면 아래와 같은 결과를 얻을 수 있다.

  0 1 2 3 4 5 6 7 8 9 10
1 True   True                
2 True   True True   True          
3 True   True True   True   True True   True

Solution

def solution():
    max_score=sum(scores)

    dp=[[False] * (max_score+1) for _ in range(n)]

    # 첫번째 점수에 대한 경우
    dp[0][0],dp[0][scores[0]]=True,True

    for i in range(1,n):
        score=scores[i]
        for j in range(max_score):
            if dp[i-1][j]:
                #틀리는 경우
                dp[i][j] = True
                #맞는 경우
                dp[i][j+score]=True

    return sum(dp[n-1])

if __name__ == "__main__":
    n=0
    scores=[]

    with open("input.txt","r" ) as file:
        test_cases=int(file.readline())
        for case in range(test_cases):
            n=int(file.readline())
            scores=list(map(int,file.readline().split()))
            print(f"#{case+1} {solution()}")

댓글남기기