알고리즘 연습/백트래킹

[Lv.2 / 프로그래머스 / 파이썬] 비밀 코드 해독 (2025 프로그래머스 코드챌린지 1차 예선)

김세진 2025. 4. 11. 18:22
반응형



 

 

 

프로그래머스

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

programmers.co.kr

 

 

풀이

 

1부터 n까지 5개의 숫자로 만들 수 있는 정수 조합들을 모두 탐색하며 해결해야 하는 문제이다.
조합을 만든 뒤, q랑 비교해보며 ans 와 같은 결과가 나오는 조합이면 비밀 코드에 해당된다.

 

itertools를 활용하면 조합을 보다 쉽게 생성할 수 있다.

 

import itertools

def solution(n, q, ans):
    # 배열의 전체 조합
    arrs = itertools.combinations([i for i in range(1, n+1)], 5)
    
    # 배열을 순회하며 탐색
    res = 0
    for arr in arrs:
        # 현재 조합과 q를 비교하며 ans와 일치하는지 판별
        for i in range(len(q)):
            cur_q = q[i]
            cnt = 0
            for num in arr:
                if num in cur_q:
                    cnt += 1
            if ans[i] != cnt:
                break
        else:
            res += 1
    return res

 

 

 

 

 

반응형