알고리즘/Python

[python] 프로그래머스 - 메뉴 리뉴얼

제주도랏맨 2023. 3. 10. 20:40

출처 : 프로그래머스, https://school.programmers.co.kr/learn/courses/30/lessons/72411

 

프로그래머스

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

programmers.co.kr

 

그냥 짜는게 방법이라는걸 확신하는게 가장 어려운 것 같다.

 

더보기

 

 


 

풀이

 

from itertools import combinations
from collections import Counter

def solution(orders, course):
    answer = []
    combi_list = []
    
    for order in orders:
        for num in course:
            combi_list += list(set("".join(sorted(combi)) for combi in combinations(order, num)))
            
    combi_result = sorted(list([k, v] for k, v in Counter(combi_list).items() if v != 1), key = lambda x: (len(x[0]), -x[1]))
    
    prev_len = 0
    prev_max = 0
    
    for string, count in combi_result:
        
        if prev_len != len(string):
            answer.append(string)
            prev_max = count
            prev_len = len(string)
        else:
            if prev_max == count:
                answer.append(string)
    
    return sorted(answer)

 

풀이가 너무 드럽다..

 


 

Github

 

GitHub - bh2980/Algorithm-Problem: 알고리즘 풀이 흔적들

알고리즘 풀이 흔적들. Contribute to bh2980/Algorithm-Problem development by creating an account on GitHub.

github.com