Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- AWS
- 전산기초
- CS231n
- 모두를 위한 딥러닝 강좌 시즌1
- ssd
- 2단계
- test-helper
- ubuntu
- 코드수행
- SWEA
- 이것이 코딩테스트다 with 파이썬
- 3단계
- 머신러닝
- Object detection
- MySQL
- 실전알고리즘
- 그리디
- 딥러닝
- Python
- C++
- cs
- 자료구조 및 실습
- 파이썬
- STL
- 구현
- pytorch
- docker
- 백준
- 1단계
- 프로그래머스
Archives
- Today
- Total
곰퓨타의 SW 이야기
[프로그래머스 level2 메뉴 리뉴얼] itertools, collections 사용하기 본문
해결해야하는 문제는 다음과 같았다.
https://programmers.co.kr/learn/courses/30/lessons/72411
코딩테스트 연습 - 메뉴 리뉴얼
레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서
programmers.co.kr
이 문제에서 주의할 점은 오름차순으로 정렬하는 과정이 있으면 좋다는 점과,
해당 course에 대해 2번 이상 주문이 들어와있다는 것을 생각해야 한다는 점을 유의하면서 문제를 해결하면 된다.
이러한 아이디어로 작성한 답은 다음과 같다.
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for cnt in course:
temp = []
for order in orders:
if len(order) >= cnt :
order = ''.join(sorted(list(order)))
combi = list(combinations(order,cnt))
temp += combi
c = Counter(temp)
temp_cnt = c.most_common()
if len(temp_cnt)>0 and temp_cnt[0][1]>1:
max_cnt = temp_cnt[0][1]
answer.append(''.join(temp_cnt[0][0]))
for i in range(1,len(temp_cnt)):
if temp_cnt[i][1] == max_cnt:
answer.append(''.join(temp_cnt[i][0]))
else :
break
answer.sort()
return answer
'TIL > 프로그래머스' 카테고리의 다른 글
[프로그래머스 level2 괄호 회전하기] stack 활용하기 (0) | 2021.06.11 |
---|---|
[프로그래머스 level2 배달] 플로이드 워셜 알고리즘 활용하기, bfs 응용(다익스트라) 버전 추가 (0) | 2021.06.11 |
[프로그래머스 level2 행렬 테두리 회전하기] 시간 초과 극복하기 (0) | 2021.06.11 |
[프로그래머스 level2 게임 맵 최단거리] 효율적으로 bfs 활용하기 (0) | 2021.06.10 |
[프로그래머스 level1 약수의 개수와 덧셈] 완전제곱수 활용하기 (0) | 2021.06.10 |
Comments