코딩테스트 연습

[파이썬] 프로그래머스: 삼총사 / 조합

콩콩(๓° ˘ °๓)♡ 2023. 3. 20. 22:10

조합을 활용한 기초적인 문제이다.

이 문제는 조합 원소의 개수가 크지 않고 3으로 고정되어 있어 구현이 쉽다. 

원소 개수만큼 for문을 돌려 체크해볼 인덱스를 뽑으면 된다. 

모든 조합을 돌면서 합이 0이면 count를 1 올려준다.

def solution(number):
    answer = 0
    for i in range(len(number)-2):
        for j in range(i + 1, len(number)-1):
            for k in range(j + 1, len(number)):
                if number[i] + number[j] + number[k] == 0:
                    answer += 1
    return answer
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

조합의 기본 구현은 재귀를 이용해 표현할 수 있다.

def gen_combinations(arr, n):
    result =[] 

    if n == 0: 
        return [[]]

    for i in range(0, len(arr)): 
        elem = arr[i] 
        rest_arr = arr[i + 1:] 
        for C in gen_combinations(rest_arr, n-1): 
            result.append([elem]+C) 
              
    return result
l = [1, 2, 3, 4]
n = len(l)
r = 3
answer = []

def dfs(idx, list):
    if len(list) == r:
        answer.append(list[:])
        return

    for i in range(idx, n):
        dfs(i+1,list+[l[i]])

dfs(0, [])
print(answer)