알고리즘 연습/백트래킹
[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
반응형