문제
https://programmers.co.kr/learn/courses/30/lessons/72411
나의 코드
from itertools import combinations
def solution(orders, course):
answer = []
for course_i in course:
dict={}
tmp_answer = []
for order in orders:
tmp_answer+=list(combinations(order,course_i))
for i in tmp_answer:
i=list(i) #순서 섞인 것도 동일하게 처리를 위해서 정렬해야 함 test3번 참조
i.sort()
tmp="".join(i)
if tmp in dict.keys():
dict[tmp]+=1
else:
dict[tmp]=1
if len(dict)!=0:
max_val= max(dict,key=dict.get)
for key in dict.keys():
if dict[max_val]==dict[key] and dict[max_val]>=2:
answer.append(key)
answer.sort()
return answer
경우의 수, 순열 조합을 알고 있다면 구현하면 된
orders에서 하나씩 불러와 단품메뉴 갯수로 만들 수 있는 조합을 combination을 이용하여 구성,
딕셔너리로 만들 수 있는 조합들을 카운트하고 가장 많이 카운트 한 것을 찾아 모두 answer에 추가한다.
이를 반복하면 완성
count할 때
from collections import Counter
해당 기능도 사용할 수 있을 듯하다.
'공부-코딩테스트 > 코테풀이 - 자바, 파이썬' 카테고리의 다른 글
문자열 압축 (코딩테스트, 프로그래머스) (0) | 2022.01.24 |
---|---|
프린터 (코딩테스트, 프로그래머스) (0) | 2022.01.20 |
타겟 넘버 (코딩테스트, 프로그래머스) (0) | 2022.01.19 |
코딩테스트 문제 : 거리두기 확인하기 (프로그래머스) (0) | 2022.01.13 |
피로도 파이썬(프로그래머스) (0) | 2022.01.05 |
댓글