728x90
▶메뉴 리뉴얼 (Python) : 2021 KAKAO BLIND RECRUITMENT (level 2)
▶풀이
combinations를 이용해서 메뉴별로 조합을 만든다.
combinations는 중복을 허용하지 않고 조합을 만들어줘서 그것을 이용했다.
그다음에 조합이 몇 개가 등장하는지 counter함수를 이용해서 카운트했다.
이때 어떤 메뉴를 추가할지 정해야 하는데
2명 이상 주문한 코스 거나 가장 많이 주문한 코스면 된다.
그래서 조건문에 1보다 커야 하고 가장 첫 번째 값과 같을 때 추가해주는 거다.
첫 번째 값과 같아야 하는 이유는 most_common() 함수를 이용해서 자동으로 정렬시켰고,
그렇기 때문에 두 번째 코스도 첫 번째와 같이 많이 호출되었을 수도 있기 때문이다.
이거를 반복시켜주면 된다.
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for k in course:
candi = []
for menu in orders:
for m in combinations(menu, k):
a = ''.join(sorted(m))
candi.append(a)
sorted_candi = Counter(candi).most_common()
#print(sorted_candi)
#print()
for menu, cnt in sorted_candi:
if cnt > 1 and cnt == sorted_candi[0][1]:
answer += [menu]
return sorted(answer)
딱히 효율성 테스트가 없어서 쉽게 통과했다.
효율성 테스트 없는 문제 짱~!!
728x90
'Programmers Code > Level 2' 카테고리의 다른 글
[Programmers] level2 - 영어 끝말잇기 (Python) : Summer/Winter coding(~2018) (0) | 2022.07.18 |
---|---|
[Programmers] level2 - 2 x n 타일링 (Python) : 연습문제 (0) | 2022.07.17 |
[Programmers] level2 - 수식 최대화 (Python) : 2020 카카오 인턴십 (0) | 2022.07.16 |
[Programmers] level2 - 짝지어 제거하기 (Python) : 2017 팁스타운 (0) | 2022.07.15 |
[Programmers] level2 - k진수에서 소수 개수 구하기 (Python) : 2022 KAKAO BLIND RECRUITMENT (0) | 2022.06.11 |