728x90
https://school.programmers.co.kr/learn/courses/30/lessons/152996
나의 풀이
시소가 설치되어 있고 중심으로부터 2(m), 3(m), 4(m) 거리의 지점에 좌석이 있다고 할 때 완전한 균형을 이루는 쌍이 몇 개가 존재하는지 구하는 문제이다.
[100,180,360,100,270] | 4 |
{100, 100} 은 서로 같은 거리에 마주보고 앉으면 균형을 이룹니다.
{180, 360} 은 각각 4(m), 2(m) 거리에 마주 보고 앉으면 균형을 이룹니다.
{180, 270} 은 각각 3(m), 2(m) 거리에 마주 보고 앉으면 균형을 이룹니다.
{270, 360} 은 각각 4(m), 3(m) 거리에 마주 보고 앉으면 균형을 이룹니다.
- aN이 2m에 앉았을 때 균형을 이루는 상황
- 반대쪽 2m에 aN이 앉을 때
- 반대쪽 3m에 aN*(2/3)이 앉을 때
- 반대쪽 4m에 aN*(2/4)이 앉을 때
- aN이 3m에 앉았을 때 균형을 이루는 상황
- 반대쪽 2m에 aN*(3/2)이 앉을 때
- 반대쪽 3m에 aN이 앉을 때
- 반대쪽 4m에 aN*(3/4)이 앉을 때
- aN이 4m에 앉았을 때 균형을 이루는 상황
- 반대쪽 2m에 aN*(4/2)이 앉을 때
- 반대쪽 3m에 aN*(4/3)이 앉을 때
- 반대쪽 4m에 aN이 앉을 때
중복된 경우를 제거하고 모든 경우를dict_weights[w]+dict_weights[w*2/3]+dict_weights[w*2/4]+dict_weights[w*3/2]+dict_weights[w*3/4]+dict_weights[w*4/2]+dict_weights[w*4/3]로 하여 답을 구함
from collections import defaultdict
def solution(weights):
dict_weights = defaultdict(int)
answer = 0
for w in weights:
answer += dict_weights[w]+dict_weights[w*2/3]+dict_weights[w*2/4]+dict_weights[w*3/2]+dict_weights[w*3/4]+dict_weights[w*4/2]+dict_weights[w*4/3]
dict_weights[w] += 1
return answer
728x90
'Coding Test > programmers' 카테고리의 다른 글
[Python] 파이썬 프로그래머스 야근지수 (0) | 2023.05.24 |
---|---|
[Python] 파이썬 프로그래머스 요격 시스템 (0) | 2023.05.17 |
[Python] 파이썬 프로그래머스 네트워크 (0) | 2023.05.04 |
[Python] 파이썬 프로그래머스 피로도 (0) | 2023.05.03 |
[Python] 파이썬 프로그래머스 디스크 컨트롤러 (0) | 2023.05.02 |