https://school.programmers.co.kr/learn/courses/30/lessons/152996
다음과 같이 조합을 사용하면 시간 초과 에러를 출력한다.
더보기
from itertools import combinations as c
def solution(weights):
answer = 0
weights = sorted(weights)
ratios = [1/1, 1/2, 2/3, 3/4]
for w in list(c(weights, 2)):
a, b = w
if a/b in ratios:
answer+=1
return answer
현재 탐색하는 몸무게와 시소 거리의 모든 비율을 곱한 값을 dictionary에 저장 후
이후에 같은 (몸무게 * 비율)을 탐색하면 answer에 더하는 방법으로 해결하였다.
from collections import defaultdict
def solution(weights):
answer = 0
weights_dict = defaultdict(float)
ratio = [1/1, 1/2, 2/1, 2/3, 3/2, 3/4, 4/3]
for w in weights:
for r in ratio:
answer += weights_dict[r * w]
weights_dict[w] += 1
return int(answer)
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] / [Level 2] / [Python] 테이블 해시 함수 (0) | 2023.07.17 |
---|---|
[프로그래머스] / [Level 2] / [Python] 혼자 놀기의 달인 (0) | 2023.07.16 |
[프로그래머스] / [Level 2] / [Python] 마법의 엘레베이터 (0) | 2023.07.11 |
[프로그래머스] / [Level 2] / [Python] 호텔 대실 (0) | 2023.06.29 |
[프로그래머스] / [Level 2] / [Python] 무인도 여행 (0) | 2023.06.28 |