programmers- lv.1 (삼총사)

이예송·2023년 7월 6일

PS

목록 보기
7/97

문제링크: 삼총사

✍🏻 Information

content
언어python
난이도⭐️
풀이시간5분
제출횟수3
인터넷검색유무no




🍒 My Code

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




💡 What I learned

  • number의 길이<=3이라서 3중 for문을 만들어도 시간초과가 나지 않을것이라 생각하였다.
  • combination 모듈을 사용하여 풀이할 수도 있다.
def solution (number) :
    from itertools import combinations
    cnt = 0
    for i in combinations(number,3) :
        if sum(i) == 0 :
            cnt += 1
    return cnt
  • sorting 사용해서 시간을 줄여보려하였으나 주석에 쓰여진 것을 해결해줘야한다. 임의로 둘 중 하나를 옮기면 안됨
def solution(number):
    answer = 0
    number.sort()
    for i in range(len(number)):
        left = i+1
        right = len(number)-1
        while left<right:
            if number[i]+number[left]+number[right]<0:
                left+=1
            elif number[i]+number[left]+number[right]>0:
                right-=1
            else:
                print(number[i],number[left],number[right])
                answer+=1
                # 여기서 left나 right를 옮겨줘야함
            
    return answer

0개의 댓글