Notice
Recent Posts
Recent Comments
Link
나의 개발일지
[프로그래머스] Lv.2 메뉴 리뉴얼 [Python, 파이썬] KAKAO 본문
- 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/72411
- 🔑 combinations(), Counter(), Counter.most_common()
- 코스 요리를 구성하려는 메뉴 개수로 손님들의 주문 중에서 조합을 구성하고 저장한다.
- collections모듈의 Counter를 사용하면 리스트, 딕셔너리, 문자열 등에서 데이터 개수를 쉽게 셀 수 있다.
- Counter클래스의 most_common() 함수는 인자로 숫자 하나를 받는다.
- 1 = 가장 개수가 많은 1개의 (key, value)를 반환
- 2 = 가장 개수가 많은 2개의 (key, value)를 반환..
- 여기선 최댓값만 구한 후 이와 같은 개수를 가지고 2개 이상인 조합을 정답 리스트에 추가하면 끝
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for c in course : # 조합을 구성하는 크기
temp = []
for o in orders : # 손님이 주문한 단품메뉴들에 대해
combi = combinations(sorted(o),c) # c개를 고르는 조합 구성
temp.extend(combi) # 조합들 저장
cnt_dict = Counter(temp) # 조합 별 개수를 센다. 조합 : 개수 형태의 딕셔너리 반환
if cnt_dict: # 딕셔너리가 비어있지 않을 때
m = cnt_dict.most_common(1)[0][1] # 가장 많이 나온 조합의 개수를 찾았다.
for k, v in cnt_dict.items():
if v >= 2 and v == m: # 개수가 2개 이상 and 최대 개수와 동일한 값을 정답에 추가
answer.append("".join(list(k)))
return sorted(answer)
'프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.1 키패드 누르기 [Python, 파이썬] KAKAO (1) | 2023.10.09 |
---|---|
[프로그래머스] Lv.2 [3차] 방금그곡 [Python, 파이썬] KAKAO (1) | 2023.10.08 |
[프로그래머스] Lv.3 불량 사용자 [Python, 파이썬] KAKAO (0) | 2023.10.06 |
[프로그래머스] Lv.1 신규 아이디 추천 [Python, 파이썬] KAKAO (0) | 2023.10.06 |
[프로그래머스] Lv.1 크레인 인형뽑기 게임 [Python, 파이썬] KAKAO (1) | 2023.10.05 |
Comments