시소 짝꿍

최민수·2023년 2월 23일
0

알고리즘

목록 보기
7/94
⭐️
from collections import Counter

def solution(weights):
    answer = 0
    
    # 두 사람 조합
    counter = Counter(weights)
    ratio = [(3/2), (4/2), (4/3)]

    # 같은 무게인 경우 먼저 처리
    for k, v in counter.items():
        if v > 1:
            answer += v*(v-1) / 2

    # 다른 무게 처리
    noDup = set(weights)
    for weight in noDup:
        for r in ratio:
            if weight * r in noDup:
                answer += counter[weight] * counter[weight*r]

    return answer
  • 조합을 이용해서 풀려고 했으나 N이 10^5 이기 때문에 시간초과.
  • 무게의 종류는 901가지이기 때문에 우선 중복 제거 후 접근해야 했음.
  • Counter 를 이용해 종류와 개수 뽑기.

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글