조합을 활용한 기초적인 문제이다.
이 문제는 조합 원소의 개수가 크지 않고 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)
'코딩테스트 연습' 카테고리의 다른 글
[파이썬] 프로그래머스: 카드뭉치 (0) | 2023.03.21 |
---|---|
[파이썬] 프로그래머스: 과일 장수 (0) | 2023.03.21 |
[알고리즘]DFS, BFS 연습문제 (0) | 2023.03.15 |
[python/C++] 가장 큰 정사각형 찾기 / 동적 프로그래밍(DP) (0) | 2023.03.11 |
[파이썬] 프로그래머스: 문자열 나누기 (0) | 2023.02.23 |