728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/131705
내 풀이
주어진 배열에서 3개의 합이 0이 되는 조합의 개수를 뽑는 문제이다.
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개의 중첩 반복문을 사용하여 중복되지 않는 3가지 요소를 골랐다.
반복문을 많이 쓰기 때문에 시간복잡도가 O(n^3)인데,
이 때문에 시간초과가 나지 않을까? 생각했지만, 다행히도 주어진 배열의 길이가
-1000 <= number의 원소 <= 1000
이기 때문에 시간초과는 나지 않은 것 같다!
다른 사람 풀이
말 그대로 조합을 뽑는 문제이기 때문에
파이썬의 조합 라이브러리를 쓴 풀이도 있다.
itertools의 combination을 사용하면 원하는 원소 3개를 뽑을 수 있기 때문이다.
def solution (number) :
from itertools import combinations
cnt = 0
for i in combinations(number,3) :
if sum(i) == 0 :
cnt += 1
return cnt
끄읏-!
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 1 소수 찾기 (0) | 2024.08.21 |
---|---|
[프로그래머스][PYTHON] Lv. 1 시저 암호 (0) | 2024.08.20 |
[프로그래머스][PYTHON] Lv. 1 콜라 문제 (0) | 2024.08.16 |
[프로그래머스][PYTHON] Lv. 1 [1차] 비밀지도 (0) | 2024.08.14 |
[프로그래머스][PYTHON] Lv. 1 공원 산책 (0) | 2024.08.13 |