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 |