코딩 다이어리

[Programmers] 삼총사(Level. 1) 본문

알고리즘/Programmers

[Programmers] 삼총사(Level. 1)

yc7764 2022. 12. 4. 04:43

문제설명

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

 

프로그래머스

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

programmers.co.kr

 

문제풀이

제출코드

def solution(number):
    answer = 0
    for i in range(len(number)):
        for j in range(i+1, len(number)):
            for k in range(j+1, len(number)):
                if number[i] + number[j] + number[k] == 0:
                    answer += 1
    return answer
  • 3중 for문을 사용해 모든 경우의 수를 확인했고 세 개의 수를 모두 합하여 0일 경우 answer을 증가시켜 조건을 만족하는 경우의 수를 count하였다.

다른 사람의 풀이

def solution (number) :
    from itertools import combinations
    cnt = 0
    for i in combinations(number,3) :
        if sum(i) == 0 :
            cnt += 1
    return cnt
  • itertools 패키지의 combinations를 사용하여 문제를 풀이했으며, 먼저 combinations를 사용해 배열 number에서 원소의 개수가 3개인 조합을 구한다. 구한 조합들을 sum() 메소드를 이용해 합을 구하고 0인 경우를 count한다.
  • 직접 경우의 수를 따지는 것이 아니라 itertools에서 제공하는 조합 또는 순열을 구해 문제를 풀이하는 방법을 연습해야겠다. 
Comments