일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 스프링
- Spring
- DPDK
- 개발자
- 카카오
- Java
- 캐시
- 백엔드
- 파이썬
- 프로그래머스
- Elasticsearch
- Kakao
- 운영체제
- C
- Linux
- 리눅스
- 알고리즘
- 쿠버네티스
- 자바
- 도커
- springboot
- 스프링부트
- docker
- IT
- programmers
- Python
- 엘라스틱서치
- 프로그래머스 #카카오 #IT #코딩테스트
- 네트워크
- 코딩테스트
- Today
- Total
저고데
[프로그래머스]메뉴 리뉴얼 본문
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/72411
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제를 요약하자면 다음과 같다.
각 메뉴가 알파벳으로 나타난다.
각 손님들이 주문한 내용을 담고 있는 배열 orders와 코스요리에 몇 개의 메뉴가 포함이 되어야 하는지를 담고 있는 courses 배열이 주어진다.
이 때, 각 손님들이 가장 많이 주문한 메뉴를 토대로 코스요리를 짠다고 할 때, courses의 갯수에 맡게 어떻게 요리를 구성해야하는지를 반환해야 한다.
무작정 주문한 횟수가 많은 것을 코스요리로 담는 것이 아니라, 손님들이 여러 개의 메뉴를 주문내용에서 한 번에 시킬 때를 기준으로 한다.(이건 제가 뭐라고 설명해야할 지 모르겠네요 ㅠㅠ 아무튼 문제 내용이 이해하기가 조금 어렵습니다. ㅠㅠ)
코드를 작성하기 위한 순서는 다음과 같다.
1. 각 손님별로 주문한 메뉴에서 모든 경우의 수를 알기 위해 combinations을 import 해준다. permutations이 아닌 이유는, 메뉴의 구성의 수를 알아내는 것이기 때문에 (A, B), (B, A) 모두 같은 구성이기 때문이다.
2. 각 경우의 수마다 menu 배열에 넣어주고 Counter를 사용하여 총 몇 회인지 딕셔너리 형태로 바꾸어준다.
3. counter의 배열이 빈 배열이 아니고 가장 큰 횟수가 1보다 클 경우에 answer에 추가해준다.
from itertools import combinations #1번
from collections import Counter
def solution(orders, course):
answer = []
for i in course:
menu=[]
for j in orders:
combo=combinations(sorted(j),i) #orders값이 정렬이 된 값이 아니기에 sorted(i)를 해주어야 한다.
menu+=combo
counter=Counter(menu) #2번 : Counter를 사용하여 각각의 총 횟수를 딕셔너리 형태로 변환해준다.
if len(counter)!=0 and max(counter.values())>1:
for k in counter:
if counter[k]==max(counter.values()):
answer+=[''.join(k)]
return sorted(answer)
해당 문제 같은 경우에는 combinations을 사용하여 손님이 주문한 메뉴의 모든 경우의 수(부분 집합)를 구하고
Counter를 사용하여 딕셔너리의 형태로 만들어주는 것이 가장 큰 핵심이었다.
(answer+=[''.join(K)] 부분에서 []를 사용하지 않아서 계속 오답이 나왔던 건 안비밀이다;; 여러분도 괄호 꼭 확인하세욤 ㅎ)
'프로그래머스' 카테고리의 다른 글
[프로그래머스]행렬의 덧셈 (0) | 2023.01.18 |
---|---|
[프로그래머스]보석 쇼핑 (0) | 2023.01.17 |
[프로그래머스]불량 사용자 (0) | 2023.01.17 |
[프로그래머스]신규 아이디 추천 (0) | 2023.01.17 |
[프로그래머스]크레인 인형뽑기 게임 (1) | 2023.01.15 |