
from itertools import combinations
def convertObj(order, courseItem, solObj):
    
    if len(order) < courseItem:
        return
    
    tmp = list(combinations(order, courseItem))
    for value in tmp:
        value = tuple(sorted(value))
        key = ""
        for k in range(courseItem):
            key += value[k]
        if key in solObj:
            solObj[key] += 1
        else:
            solObj[key] = 0
            
def solution(orders, course):
    result = []
    
    
    for i in range(len(orders)):
        orders[i] = list(orders[i])
    for courseItem in course:
        solObj = {}
        
        for order in orders:
            convertObj(order, courseItem, solObj)
        all_keys = solObj.keys()
        all_values = solObj.values()
        if len(all_keys) >= 2:
            mmax = max(all_values)
            if mmax > 0:
                for key, value in solObj.items():
                    if value == mmax:
                        result.append(key)
    result.sort()
            
    return result
import collections
import itertools
def solution(orders, course):
    result = []
    for course_size in course:
        order_combinations = []
        for order in orders:
            order_combinations += itertools.combinations(sorted(order), course_size)
        most_ordered = collections.Counter(order_combinations).most_common()
        result += [ k for k, v in most_ordered if v > 1 and v == most_ordered[0][1] ]
    return [ ''.join(v) for v in sorted(result) ]
from collections import Counter
Counter('hello world') # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
데이터의 개수가 많은 순으로 정렬된 배열을 리턴하는 most_common() 메서드를 제공한다.
Counter('hello world').most_common() 
# [('l', 3), ('o', 2), ('h', 1), ('e', 1), (' ', 1), ('w', 1), ('r', 1), ('d', 1)]
이 메서드의 인자로 숫자 K를 넘기면 그 숫자만큼만 리턴하기 때문에, 가장 개수가 많은 K개의 데이터를 얻을 수도 있다.
Counter('hello world').most_common(1) # [('l', 3)]
[item for item in iterable]이 기본 형식이다.words = ['나는', '파이썬을', '공부하고', '있습니다.', '파이썬은', '무척', '심플하고', '명료합니다.']
[len(word) for word in words]
# [2, 4, 4, 5, 4, 2, 4, 6]
[item for item in iterable if 조건(item)]이 기본 형식이다.[len(word) for word in words if len(word) > 3]
# [4, 4, 5, 4, 4, 6]