세용용용용 2023. 10. 4. 12:47

나의코드

모든 경우를 다 따져준다!! 완탐

def solution(weights):
    answer = 0
    for i in range(len(weights)-1):
        print(weights[i])
        first_weights = [weights[i]*2, weights[i]*3, weights[i]*4]
        for j in range(i+1,len(weights)):
            if j == i:
                continue

            for x in [2,3,4]:
                if (weights[j]*x) in first_weights:
                    answer += 1
                    break
    #print(answer)
       
    return answer
solution([100,180,360,100,270])

우씨이이잉!!

 

수정 코드

from collections import Counter
def solution(weights):
    answer = 0
    w=Counter(weights)
    #print(w)

    for i in w:
        #print(i)
        # 만약 동일한게 있으면 경우의수 따져줌
        # (n*(n-1))/2
        if w[i] >= 2:
            answer += (w[i]*(w[i]-1))//2

        # 2:3 인 경우를 따져준다
        # 경우의 수는 개수 곱하기로
        if i*(2/3) in w:
            answer += (w[i]*w[i*(2/3)])
        # 2:4 인 경우를 따져준다
        # 경우의 수는 개수 곱하기로
        if i*(2/4) in w:
            answer += (w[i]*w[i*(2/4)])
        # 3:4 인 경우를 따져준다
        # 경우의 수는 개수 곱하기로
        if i*(3/4) in w:
            answer += (w[i]*w[i*(3/4)])
   
    #print(answer)
    return answer
solution([100,180,360,100,270])

수학적으로 접근해야됨 ㅠㅠㅠ 꾸우웅