코딩테스트/프로그래머스

[프로그래머스][Set][교집합] 📍비밀 코드 해독

박소민 2025. 9. 24. 21:06
비밀 코드 해독
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

  • 풀이
    • 제한
      • 10 ≤ n ≤ 30
      • 1 ≤ (q의 길이 = m) ≤ 10
    • 30까지의 숫자 중 5개를 고르는 조합 하나씩 돌면서
    • 모든 쿼리랑 교집합 했을때의 갯수가 ans 랑 동일해야함
      • 시간복잡도
        • 30C5 := (24300000 / 120) =202500
        • q 최대 10
        • 교집합 5 
        • = 202500 * 10 * 5
    • 교집합 갯수가 다르면 out
from itertools import combinations

def solution(n, q, ans):
    answer = 0
    
    for comb in combinations(range(1,n+1),5):
        for i, query in enumerate(q):
            if len(set(comb)&set(query))!=ans[i]:
                break
        else:
             answer+=1  
                
    return answer