개발 기초/알고리즘

[프로그래머스/알고kit/해시] 폰켓몬

아모르AMORE 2024. 3. 7. 23:04

1. 시간초과 코드

def solution(nums):
    def solve(idx, used, chosen, total, N, nums, cnt): 
        nonlocal answer
        if cnt == total:
            for el in range(N):
                if used[el] == 1:
                    chosen.add(nums[el])
            if answer < len(chosen):
                answer = len(chosen)
            return chosen
        if idx == N:
            return
        elif idx < N:
            used[idx] = 1
            chosen.add(nums[idx])
            solve(idx + 1, used, chosen, total, N, nums, cnt + 1)
            used[idx] = 0
            chosen.discard(nums[idx])
            solve(idx + 1, used, chosen, total, N, nums, cnt)
    
    answer = 0
    N = len(nums)
    total = N // 2
    used = [0] * N
    chosen = set()
    cnt = 0
    for idx in range(N):
        solve(idx, used, chosen, total, N, nums, cnt)
    return answer

 

2. 개선 방법 ?