728x90
🍒문제
programmers.co.kr/learn/courses/30/lessons/72411?language=python3
🍒풀이
1. 먼저 orders 의 문자열을 정렬한다. !!!
2. combination 조합으로 course 수 만큼 조합을 생성한다.
3. 조합의 개수를 dictionary 로 센 다음 2개 이상 주문한 것들 중에서 가장 큰 value를 가진 key(order)를 answer에 추가한다.
*** order 안의 스트링도 정렬을 해주어야 한다 ***
🍒코드
import itertools
#가장 많이 함께 주문된 단품을 코스로 (여러개면 배열에 모두 담음)
#최소 2개 단품 이상 주문
def solution(orders, course):
answer = []
for num in course:
#print(num)
total = {}
for order in orders:
if(num > len(order)):
continue
li = list(map(''.join,itertools.combinations(sorted(order), num)))
for key in li:
if key not in total:
total[key] = 1
else:
total[key] += 1
res = sorted(total.items(), key=lambda x: x[1], reverse=True)
if(len(res)>0):
if(res[0][1] < 2):
continue
else:
max_val = res[0][1]
for i in range(len(res)):
if(res[i][1] == max_val):
answer.append(res[i][0])
else:
break
else:
continue
answer.sort()
return answer
728x90
'코딩 테스트' 카테고리의 다른 글
[기타] 시간 복잡도 / 예외처리 (0) | 2021.03.20 |
---|---|
[프로그래머스] 이진 변환 반복하기 (Python) (0) | 2021.03.18 |
[프로그래머스] 큰 수 만들기 (Python) (0) | 2021.03.18 |
[프로그래머스] 조이스틱 (Python) (0) | 2021.03.18 |
[프로그래머스] 삼각 달팽이 (C++) (0) | 2021.03.17 |
댓글