새소식

⌨️ Algorithms/프로그래머스

[Python] 프로그래머스 Lv1_삼총사

2023. 1. 13. 22:22

  • -

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

 

프로그래머스

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

programmers.co.kr

 

  • 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사
  • ex) 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때
    • 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사
    • 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사
    • => 삼총사를 만들 수 있는 방법의 수: 2
  • number: 한국중학교 학생들의 번호를 나타내는 정수 배열
  • 학생들 중 삼총사를 만들 수 있는 방법의 수를 return

제한사항

  • 3 ≤ number의 길이 ≤ 13
  • -1,000 ≤ number의 각 원소 ≤ 1,000
  • 서로 다른 학생의 정수 번호가 같을 수 있음

 

"""
입출력 예시)

number = [-2, 3, 0, 2, -5] -> 2
number = [-3, -2, -1, 0, 1, 2, 3] -> 5
number = [-1, 1, -1, 1] -> 0
"""
#  number = [-3, -2, -1, 0, 1, 2, 3] -> 5

# 학생들의 정수 번호 쌍 (-3, 0, 3), (-2, 0, 2), (-1, 0, 1), (-2, -1, 3), (-3, 1, 2) 이 삼총사가 될 수 있음
# => 5

 

 

## 의사코드 ##

# 학생들의 정수 번호 쌍을 구함 
# -> combinations(number, 3)

# 정수 번호 쌍의 합이 0인 경우 answer += 1

 

 

 

통과한 코드

from itertools import combinations
def solution(number):
    answer = 0
    combi = list(combinations(number, 3))
    for a, b, c in combi:
        if a+b+c == 0:
            answer += 1
    return answer

 

 

다른 풀이

from itertools import combinations

def solution(number):
    return len([sum(nums) for nums in combinations(number, 3) if sum(nums) == 0])

-> 한 줄로 작성

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!