프로그래머스 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을 통해 간결하게 표현한 풀이입니다.
감사합니다.