반응형
https://school.programmers.co.kr/learn/courses/30/lessons/152996
<문제 풀이>
- Counter를 이용해 몸무게에 따른 사람 수를 체크한다.
- 거리에 따른 비율 list 생성한다. 이때 1 이하인 비율은 확인하지 않는다. 그 이유는 나라는 기준점에서는 1 이하 일 수 있지만 시소 반대편 사람기준에서는 역수가 되어 1보다 커지기 때문이다. 그래서 중복으로 체크할 필요가 없다.
- 몸무게를 순회하면서 확인한다. 이때 같은 몸무게가 2명 이상이면 같은 몸무게가 같은 경우의수도 생성이 가능하다.
- 몸무게 * 비율 했을 때 나오는 무게를 가진 사람이 존재한다면 해당 경우의 수를 구해서 answer에 누적시킨다.
<Code>
from collections import Counter
def solution(weights):
answer = 0
info = Counter(weights) # 몸무게: 사람수
check = [3/2, 2, 4/3] # 거리에 따른 비율
for weight in info:
if info[weight] >= 2: # 같은 몸무게인 사람들끼리 짝을 만들때 나오는 경우의 수
answer += (info[weight] - 1) * info[weight] // 2
for i in check:
temp = weight * i
if temp in info: # 시소가 균형을 이루는 경우
answer += info[weight] * info[temp] # 몸무게 해당하는 사람들 끼리 짝을 만들때 나오는 경우의 수 추가
return answer
※ 잘못된 점, 개선점 등이 있다면 언제든 댓글로 알려주시면 감사하겠습니다.
반응형
'Alogorithm > programmers' 카테고리의 다른 글
[programmers] Lv2 게임 맵 최단거리 - Python (0) | 2023.03.31 |
---|---|
[programmers] Lv2 과제 진행하기 - Python & Java (0) | 2023.03.31 |
[programmers] Lv2 택배 배달과 수거하기 - Python (0) | 2023.03.29 |
[programmers] Lv2 이모티콘 할인행사 - Python (0) | 2023.03.29 |
[programmers] Lv2 숫자 변환하기 - Python (2) | 2023.03.29 |