유형 : 구현.
ㅏ하하
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로 순열 전체를 구한 뒤에 푸는 것도 방법이다.
'프로그래머스 > Lv. 1' 카테고리의 다른 글
29. 시저 암호 ★ (ord, chr, 간단히 알파벳 순회하기) (1) | 2024.07.14 |
---|---|
28. 최소직사각형 ★ (0) | 2024.07.14 |
26. 이상한 문자 만들기 (enumerate) (0) | 2024.07.12 |
25. 3진법 뒤집기 ★ (10진법 -> 3진법, 3진법 -> 10진법) (0) | 2024.07.12 |
24. 예산 ★ (그리디;;) (0) | 2024.07.12 |