π μκ³ λ¦¬μ¦ μλ£ κ΅¬μ‘°μ λν΄ κ΅¬ννλ©° 볡μ΅νμλ€.
π μ€ν, ν, ν΄μ¬, νΈλ¦¬, ν, DFS, BFS λ±μ κ°λ³κ² ꡬνν΄ λ³΄λ©° λμ λ°©μμ μ΄ν΄νκ³ μ¬μ©λ§ νμμ§λ§, κ°μλ₯Ό λ€μΌλ©° ꡬνμ ν΄λ³΄λ 머리μμ μ λ¨κ³ λλ¦ μ¬λ―Έμμλ€ γ
π μλλ Dynamic Programming μ μμ£Όλ‘ λ¬Έμ λ₯Ό νλ € νμ§λ§ μ΄λ €μ΄ λ¬Έμ λ₯Ό μ§μ€ν΄μ λͺ κ° νΈλ κ² λ³΄λ€λ λ€μνκ² Level 1~2 μ λμ λ¬Έμ λ₯Ό λ§μ΄ μ νμλ€.
π λ¬Έμ λ₯Ό μ νκ³ μ½μμλ μ΄λ€ μμΌλ‘ μ κ·Όνμ¬ ν μ§ κ°μ΄ μ‘ν λ¬Έμ μλ€.
- μΌλ¨ λͺ κ°μ§ μ½μ€ μ€ κ²ΉμΉλ λ©λ΄λ₯Ό 골λΌμΌ νκΈ° λλ¬Έμ Combinations λ₯Ό μ¬μ©νμ¬ νλ €κ³ νμ§λ§ sort μ λ©λ΄λ₯Ό λ€ κ³ λ₯Έ ν κ°μ₯ λ§μ΄ 골λλ κ²μ μ²λ¦¬ νλ κ³Όμ μμ μ μλΌ μκ°μ΄ κ±Έλ Έλ λ¬Έμ λ€ γ
from itertools import combinations
from collections import defaultdict
def solution(orders, course):
result = [] # return κ²°κ³Ό κ° μ μ₯
for cnt in course:
temp = defaultdict(int)
for menu in orders:
for com in combinations(sorted(menu), cnt):
temp[com] += 1
if temp.values():
max_val = max(list(temp.values()))
for menu, cnt in temp.items():
if cnt == max_val and cnt != 1:
result.append(''.join(menu))
return list(sorted(result))
π μλλ μ£Όλ§μ λͺ κ°μ§ μκ³ λ¦¬μ¦ λ¬Έμ νΉμ μ μ§μ₯ μ¬λλ€μ΄ μμΌλ©΄ μ’κ² λ€κ³ νλ, λ΄κ° λ§λ€κ³ μΆμμ§λ§ μκ°μ λͺ» λ§λ€κ³ λμ¨ λ°©νλ²½ λ§μ΄κ·Έλ μ΄μ ν΄μ νΉμ κΈ°λ₯μ λ§λ€μ΄ νμ¬μ¬λλ€μκ² λ°°ν¬νλ € νμ§λ§ μ리λ¨μ μ μ£Όν ν΄λ²λ €μ γ γ γ μ리λ¨... ν λ² λ³΄λ λ©μΆμκ° μμλ€ γ μ΄λ²μ£Όμλ κΌ λ§λ€μ΄μΌμ§...
μ΄λ²μ£Ό λ!