삼총사

ChoiDevv·2023년 1월 11일
0

풀이

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

가장 먼저 풀이법에 대해서는 정렬을 떠올렸다. 일정한 규칙이 있음을 확인했고 규칙은 다음과 같았다.

# 0, 1, 2 / 0, 1, 3 / 0, 1, 4 / 0, 2, 3 / 0, 2, 4 / 0, 3, 4
# 1, 2, 3 / 1, 2, 4 / 1, 3, 4
# 2, 3, 4

이걸 그대로 코드로 녹여내면 아래와 같다.

for i in range(3):
    for j in range(i + 1, 4):
        for k in range(j + 1, 5):
            print(i, j, k)

다른 풀이

def solution (number) :
    from itertools import combinations
    cnt = 0
    for i in combinations(number,3) :
        if sum(i) == 0 :
            cnt += 1
    return cnt

음... 내장 함수로 해결했는데 내장 함수로 해결하는 걸 그닥 좋아하지는 않지만 코딩 테스트 전용으로는 괜찮을 것 같아서 따로 정리해보려고 한다.

profile
기억보단 기록을

0개의 댓글