코딩하는 해맑은 거북이
[Python] 시소 짝꿍 - 프로그래머스 본문
해당 글은 프로그래머스 문제 '시소 짝꿍'을 다룬다.
문제
https://school.programmers.co.kr/learn/courses/30/lessons/152996#
설명
해당 문제는 시간 초과때문에 꽤 애먹었던 문제이다.
배열의 빈도수를 세어주는 Counter 함수를 이용하면 쉽게 해결할 수 있다.
먼저 같은 몸무게를 가지고 있더라도 이들은 각각의 다른 사람이므로
1:1 비율은 순서 없이 2개를 뽑는 조합을 이용해서 계산해준다.
1:2, 2:3, 3:4 비율은 중복을 제거한 몸무게 목록을 하나씩 볼 때, 해당 비율을 가진 값이 몸무게 목록에 있다면 이 둘을 곱한 값을 answer에 더해주면 된다.
코드
from collections import Counter
def solution(weights):
answer = 0
cnt = Counter(weights)
# 1 : 1
for i in cnt.values():
answer += (i*(i-1))//2
arr = list(cnt.keys())
for a in arr:
if a*2 in arr: # 1:2
answer += cnt[a]*cnt[a*2]
if a*3/2 in arr: # 2:3
answer += cnt[a]*cnt[a*3/2]
if a*4/3 in arr: # 3:4
answer += cnt[a]*cnt[a*4/3]
return answer
'코딩테스트' 카테고리의 다른 글
[Python] 덧칠하기 - 프로그래머스 (0) | 2023.03.10 |
---|---|
[Python] 바탕화면 정리 - 프로그래머스 (0) | 2023.03.10 |
[Python] 숫자 변환하기 - 프로그래머스 (DP) (0) | 2023.02.07 |
[Python] 나무 자르기 - 백준 (이진탐색) (0) | 2023.01.25 |
[Python] 회의실 배정 - 백준 (그리디) (0) | 2023.01.25 |
Comments