코딩 테스트/프로그래머스

Lv2. 의상

  • -
728x90
반응형

문제 보기 :  의상

 

프로그래머스

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

programmers.co.kr

 


문제

  • 정답률 : 65%


작성 코드

from itertools import combinations
def solution(clothes):
    clot = {}
    for i in clothes:
        if i[1] not in clot:
            clot[i[1]] = 1#[i[0]]
        else:
            clot[i[1]] += 1#.append(i[0])
    
    all_cloth = list(clot.values())
    if list(set(all_cloth)) == [1]:
        return 2**(len(all_cloth)) -1
    
    answer = sum(all_cloth)
    for i in range(2,len(all_cloth)+1):
        for l in combinations(all_cloth,i):
            k = 1
            for j in l:
                k *= j
            answer += k
    return answer

풀이

테스트 케이스는 잘 통과했는데, 제출했을 때 1번에서 계속 시간초과가 나서 속을 썩인 문제다.

결론적으론, 옷 종류가 많고 모두 옷이 1개일 때의 경우의 수를 구하는 것이었다.

알다시피 옷 종류가 n개이고 옷은 각각 1개씩 주어진다면, (2**n)-1로 구하게 될 것이다.

    if list(set(all_cloth)) == [1]:
        return 2**(len(all_cloth)) -1

따라서 위의 코드가 핵심이었다.

320x100
728x90

'코딩 테스트 > 프로그래머스' 카테고리의 다른 글

Lv2. [1차] 캐시  (0) 2024.08.02
Lv2. H-Index  (0) 2024.08.01
Lv2. 짝지어 제거하기  (0) 2024.07.27
Lv2. 숫자의 표현  (0) 2024.07.27
Lv1. 옹알이(2)  (0) 2024.07.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.