프로그래머스_삼총사

임정민·2023년 9월 24일
1

알고리즘 문제풀이

목록 보기
109/173
post-thumbnail

프로그래머스 Lv1 문제입니다. 실전에 대비하기 위해 30분 시간제한을 두고 풀었습니다.

문제

https://school.programmers.co.kr/learn/courses/30/lessons/131705

[나의 풀이]

⌛ 3분 소요


def solution(number):
    answer = 0
    from itertools import combinations

    for case in combinations(number,3):

        if sum(case)==0:
            answer += 1
    return answer

주어진 입력 리스트에서 3개씩 짝지어 합이 0인 케이스의 갯수를 구하는 문제입니다. 조합을 구할 수 있는 combinations 라이브러리를 통해 쉽게 구현할 수 있었습니다.🐮🐮🐮

[다른 사람의 풀이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

3개씩 짝지어 모든 케이스를 확인하면 되므로 3중 for으로 구현할 수도 있었습니다.🐶🐶🐶

[다른 사람의 풀이2]


from itertools import combinations
def solution(number):
    return sum([1 for c in list(combinations(number,3)) if not sum(c)])

제가 풀어낸 방식과 같은 원리로 list comprehension을 통해 간결하게 표현한 풀이입니다.

감사합니다.

profile
https://github.com/min731

0개의 댓글