[python_파이썬_pass_복습]프로그래머스_LV1_삼총사_풀이
2024. 5. 8. 21:15ㆍ코드리뷰
728x90
반응형
공부하는허딩크 : https://www.youtube.com/live/kdCOczz1e9c?feature=shared
조합의 의미만 알면 쉽게 풀 수 있다.
세명의 조합을 뽑아내서 합이 0이면 cnt += 1을 해주면 통과.
<첫번째 시도 : 통과>
import itertools
def solution1(number):
answer = 0
for i in itertools.combinations(number, 3):
if sum(i) == 0:
answer += 1
return answer
<두번째 시도 : 통과>
combinations와 동일한 조건을 주는 삼중for문 연습용.
첫번째 for문은 0~-2, 두번째는 1~-1, 세번째는 2~0 이런 조건이다.
즉 out of range가 되지 않기 위해 for문에 -2, -1을 해주는건데 반대로 -2, -1를 해주지 않았을 경우
len(numbers) = 4라면 i = 0, 1, 2가 나올텐데 여기서 2의 경우 j = 3, k = 4가 나온다.
만약 i가 3이상이 되면 k에서 out of range가 발생한다.
def solution(number):
answer = 0
for i in range(0,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
<다른사람풀이 참고>
거의 대부분 나랑 비슷하게 풀었음
dfs로 처리한 사람이 있네... 이거 나중에 분석해봐야 겠음.
def solution(number):
tot = 0
def dfs(i, cnt, sum_num):
nonlocal tot
if cnt == 3 and not sum_num:
tot += 1
return
if i == len(number):
return
if cnt < 3:
dfs(i+1, cnt+1, sum_num + number[i])
dfs(i+1, cnt, sum_num)
dfs(0,0,0)
answer = tot
return answer
728x90
반응형
'코드리뷰' 카테고리의 다른 글
[python_파이썬_pass]프로그래머스_LV1_최소직사각형_풀이 (0) | 2024.05.10 |
---|---|
[python_파이썬_pass]프로그래머스_LV1_시저 암호_풀이 (0) | 2024.05.09 |
[python_파이썬_pass]프로그래머스_LV1_크기가 작은 부분문자열_풀이 (0) | 2024.05.08 |
[python_파이썬]프로그래머스_LV1_예산_풀이 (0) | 2024.05.08 |
[★python_파이썬_복습]프로그래머스_LV1_바탕화면 정리_풀이 (0) | 2024.05.06 |