문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWHPkqBqAEsDFAUn&categoryId=AWHPkqBqAEsDFAUn&categoryType=CODE

풀이

문제를 맞추는 개수부터 생각하면 접근 할 수 있다.
문제별 점수부터 생각하면 접근이 어렵다.

1번 입력예시 [2, 3, 5] 기준으로

  • 다 틀리면 0점
  • 1번까지 맞추면 (0)+(0+2)점
  • 1~2번까지 맞추면 (0)+(0+2)+(0+3)+(0+2+3)점
  • 1~3번까지 맞추면 (0)+…+(0+5)+(0+2+5)+…점

규칙을 확인할 수 있다.
덧셈을 진행 할수록 중복 점수가 생기기 때문에
중복제거가 계속 필요하다.

T = int(input())
for test_case in range(1, T+1):
    N = int(input()) #시험 문항 수
    score = list(map(int, input().split())) #문항 별 점수
    answer = [0] #0점부터 시작
    
    for s in score:
        answer = list(set(answer)) #중복 점수 제거
        for i in range(len(answer)):
            answer.append(answer[i]+s)

    print('#'+str(test_case), len(set(answer)))

댓글남기기