본문 바로가기
코딩테스트 파이썬/파이썬 프로그래머스 2단계

메뉴 리뉴얼

by 세용용용용 2023. 6. 3.

나의 코드

from itertools import permutations
from collections import Counter
def solution(orders, course):
    answer = []
   
    for i in course:
        cos_list = []
        for j in orders:
            b=set()
            for k in permutations(j, i):
                b.add(tuple(sorted(k)))

            for _ in b:
                cos_list.append(_)
    #print(b)
   
        result = Counter(cos_list)
        result = dict(sorted(result.items(), key=lambda x :x[1], reverse=True))

        #print(result)
        #print(max(result.values()))
        for key, value in result.items():
            if value == max(result.values()) and value!=1:
                answer.append(''.join(key))
            else:
                break
   
    answer.sort()
    print(answer)
    return answer
solution(["ABCDE", "AB", "CD", "ADE", "XYZ", "XYZ", "ACD"],
         [2,3,5])

와 이제는 뭐 시간복잡도 안걸리는게 없다 ㅋㅋㅋㅋㅋㅋ

 

수정코드

from itertools import combinations
from collections import Counter
def solution(orders, course):
    answer = []
   
    for i in course:
        cos_list = []
        for j in orders:
            b=set()
            for k in combinations(j, i):
                cos_list.append(''.join(sorted(k)))
    #print(b)
   
        result = Counter(cos_list)
        print(result)
        result = dict(sorted(result.items(), key=lambda x :x[1], reverse=True))

        #print(result)
        #print(max(result.values()))
        for key, value in result.items():
            if value == max(result.values()) and value!=1:
                answer.append(''.join(key))
            else:
                break
   
    answer.sort()
    print(answer)
    return answer
solution(["XYZ", "XWY", "WXA"],
         [2,3,4])

ㅋㅋㅋㅋㅋ 아 콤비네이션 처음알았다 하...

오늘도 배워가요.ㅎㅎ.ㅎ.ㅎ.ㅎㅎ.ㅎ.ㅎㅎ.ㅎㅎㅎㅎ 하 ㅅ...

'코딩테스트 파이썬 > 파이썬 프로그래머스 2단계' 카테고리의 다른 글

방금그곡  (0) 2023.06.08
연속된 부분 수열의 합  (0) 2023.06.04
두 큐 합 같게 만들기  (0) 2023.06.02
택배상자  (0) 2023.05.30
[1차] 캐시  (0) 2023.05.29