[9/12] 메뉴 리뉴얼

이경준·2021년 9월 12일
0

코테

목록 보기
102/140

레벨2 문제

내 코드

from itertools import combinations

def solution(orders, course):
    arr = []
    for num in course:
        
        dic = {}
        for i in range(len(orders)):
            orders[i] = list(orders[i])
            orders[i].sort()
            for j in combinations(orders[i], num):
                if j in dic:
                    dic[j] += 1
                else:
                    dic[j] = 1
        
        if (len(dic) == 0):
            continue
        imax = max(dic.values())
        for k in dic:
            if ( dic[k] >= 2 and dic[k] == imax):
                arr.append("".join(k))
        
    arr.sort()
    answer = arr
    return answer

로직

  • 콤비네이션, 딕셔너리 사용

효율적인 코드

from itertools import combinations
from collections import Counter

def solution(orders, course):
    arr = []
    for num in course:
        
        basket = []
        for i in range(len(orders)):
            orders[i] = list(orders[i])
            orders[i].sort()
            for j in combinations(orders[i], num):
                basket.append(j)
                
        basket = Counter(basket)
        if len(basket) == 0:
            continue
        imax = max(basket.values())
        
        for k in basket:
            if (basket[k] >= 2 and basket[k] == imax):
                arr.append("".join(k))
        
    arr.sort()
    return arr

피드백

  • Counter를 사용하여, 딕셔너리를 쓰지 않고 원소의 개수를 바로 알 수 있었다. 근데 그렇게까지 혁신적인 것 같지는 않으니까 그냥 쓰고싶은거 쓰면 될듯
profile
The Show Must Go On

0개의 댓글