본문 바로가기

알고리즘/프로그래머스

[Python] 삼총사

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

  • 첫 번째 시도
# 삼총사
# 틀렸음.
# b와 c의 범위 설정이 잘못됐음.
def solution(number):
    length = len(number)
    answer = 0
    
    comb_list = []
    for a in range(0, length-2):
        for b in range(a+1, length-1):
            for c in range(a+2, length):
                if a != b and b != c and a != c:
                    n_list =  sorted([number[a] , number[b] , number[c]])
                    if not n_list in comb_list:
                        comb_list.append(n_list)
                        
    for i in comb_list:
        if sum(i)==0:
            answer += 1

    return answer
  • 두 번째 시도
def solution(number):
    length = len(number)
    answer = 0
    
    for a in range(0, length-2):
        for b in range(a+1, length-1):
            for c in range(b+1, length):
                    if number[a] + number[b] + number[c] == 0:
                        answer += 1

    return answer

이렇게 간단한 것을......

 

  • Combination을 이용한 풀이

math.comb()로 숫자 계산을 해주는 함수는 알았는데 리스트를 뽑아주는 함수는 없나 찾아보다가

발견해서 바로 사용

이게 제일 간단하고 편했음...

꼭 기억해야 할 듯.

from itertools import combinations # 조합 

def solution(number):
    
    answer = 0
    
    for i in combinations(number, 3): 
        if sum(i) == 0 : 
            answer += 1 
    
    return answer

 

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[Python] 두 개 뽑아서 더하기  (0) 2022.11.24
[Python] N개의 최소공배수  (0) 2022.11.23
[Python] 구명 보트  (0) 2022.11.21
[Python] 숫자 문자열과 영단어  (0) 2022.11.20
[Python] K번째 수  (0) 2022.11.19