관리 메뉴

나예

[프로그래머스] 시소짝꿍 본문

카테고리 없음

[프로그래머스] 시소짝꿍

나예_ 2023. 6. 16. 20:45

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/152996

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

2.시간초과

from itertools import combinations
def solution(weights):
    answer = 0
    
    for twin in combinations(weights,2):
        if twin[0] == twin[1]:
            answer +=1 
            continue
        if twin[0] < twin[1]:
            if (twin[0] * 3 //2 == twin[1] ) or  (twin[0] * 2 == twin[1] ) or  (twin[0] * 4 //3 == twin[1] ):
                answer +=1
        else:
            if  (twin[1] * 3 //2 == twin[0] ) or  (twin[1] * 2 == twin[0] ) or  (twin[1] * 4 //3 == twin[0] ):
                answer +=1
                
            
    return answer

시간 초과 combitions 쓰면 100000 **2라 시간초과 남

def solution(weights):
    answer = 0
    dict= {}
    for w in weights:
        if w not in dict.keys():
            dict[w] =1
        else:
            dict[w] +=1

    print(dict)
    
    for weight in dict.keys():
        if dict[weight] >=2:
            answer += (dict[weight] * (dict[weight]-1) ) /2
        if weight *2 in dict.keys():
            answer += dict[weight]  * dict[weight *2]
        if weight *2 /3 in dict.keys():
            answer += dict[weight]  * dict[weight *2 /3]
        if weight *4 /3 in dict.keys():
            answer += dict[weight] * dict[weight *4 /3]
                
            
    return answer

딕셔너리에 몸무게 별 개수를 저장해서 풀었다

728x90