프로그래머스/Lv. 1
27. 삼총사 (itertools - combinations)
Seohyeong Lee
2024. 7. 12. 22:35
유형 : 구현.
ㅏ하하
1. 나의 풀이 : 요상한 재귀,
def solution(number):
answer = rec(0, number, 0)
return answer/6
def rec(itern, number, res):
if itern == 3:
if res == 0:
return 1
else:
return 0
ans = []
for i in range(len(number)):
new = number.copy()
curr = new.pop(i)
ans.append(rec(itern + 1, new, res + curr))
return sum(ans)
1, 2, 3 tuple의 조합 6개가 각각 count되어서 나누기 6을 해야 정답이 나오는 요상한 코드이다.
뭔가 굉장히 맘에 안든다.
그치만 일단 맞았으님...
숫자제한이 작고 recursion depth 제한이 있어서 그나마 통과가 된 것 같다.
2. itertools - combinations 사용
def solution(number):
answer = 0
from itertools import combinations
for sets in combinations(number, 3):
if sum(sets) == 0:
answer += 1
return answer
이렇게 제한 숫자가 크지않은 문제의 경우 그냥 itertools로 순열 전체를 구한 뒤에 푸는 것도 방법이다.