[프로그래머스] Level 2, 메뉴 리뉴얼 (Python)

2021. 8. 5. 16:01·알고리즘/프로그래머스
728x90
반응형

문제

https://programmers.co.kr/learn/courses/30/lessons/72411?language=python3 

 

코딩테스트 연습 - 메뉴 리뉴얼

레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서

programmers.co.kr

 

코드

from itertools import combinations
from collections import Counter
def solution(orders, course):
    answer = []
    for i in course:
        for j in orders:
            list_j = list(j)
            list_j.sort() # orders 안에 내용도 정렬이 필요하므로 정렬시켜준다.
            answer.extend(list(combinations(list_j, i))) # 모든 조합 경우의 수를 answer에 넣어준다.
    
    maxx = 0
    total = []
    counter_answer = Counter(answer) # 모든 경우에 수에 대해서 counter함수로 세어준다.
    for co in course: # course안에 몇자리 수가 필요한지 co로 체크한다.
        result = []
        for i,j in counter_answer.most_common(): # 가장 counter가 많은 수대로 출력해준다.
            if co == len(i): # 원하는 자리수랑 같다면
                if len(result) >= 1: # 만약 이미 자릿수가 result안에 있다면 가장 큰값이랑 같은값만 넣어준다.
                    if max(result) == j and j >= 2:
                        total.append(i)
                        result.append(j)
                elif j >= 2: # 현재 자릿수가 result에 없다면 2보다 크다면 넣어준다.
                    total.append(i)
                    result.append(j)
    total.sort() # 전체 리스트에 대해서 정렬도 필요하므로 해준다.
    demo = []
    for i in total:
        demo.append(''.join(i)) # 문자열로 바꿔 demo에 넣어준다.
    return demo

combinations 랑 counter 함수를 잘 사용하면 나머지는 구현문제인것 같다.

반응형
저작자표시 (새창열림)

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[프로그래머스] Level3, 자물쇠와 열쇠 (Python)  (0) 2021.08.10
[프로그래머스] Level3, 합승 택시 요금 (Python)  (0) 2021.08.10
[프로그래머스] Level 1, 신규 아이디 추천 (Python)  (0) 2021.08.05
[프로그래머스] Level3, 가장 먼 노드 (Python)  (0) 2021.07.26
[프로그래머스] Level3, 네트워크 (Python)  (0) 2021.07.14
'알고리즘/프로그래머스' 카테고리의 다른 글
  • [프로그래머스] Level3, 자물쇠와 열쇠 (Python)
  • [프로그래머스] Level3, 합승 택시 요금 (Python)
  • [프로그래머스] Level 1, 신규 아이디 추천 (Python)
  • [프로그래머스] Level3, 가장 먼 노드 (Python)
wookcode
wookcode
공부한 내용들을 정리하고 기록하는 블로그입니다.
    반응형
  • wookcode
    wookcode
    wookcode
  • 전체
    오늘
    어제
    • 카테고리 (196) N
      • study (1) N
        • 아파치 카프카 애플리케이션 프로그래밍 with 자.. (0)
        • 인프런 (1) N
      • Live Study (15)
      • Programming (14)
        • Java (8)
        • Python (1)
        • Springboot (5)
        • MSA (0)
      • 알고리즘 (117)
        • 백준 (58)
        • 프로그래머스 (59)
      • 에러로그 (5)
      • 항해99 (23)
      • 면접 (1)
      • 프로젝트 (1)
      • CS (19)
        • 네트워크 (2)
        • 운영체제 (2)
        • 데이터베이스 (2)
        • 컴퓨터구조 (1)
        • Java (8)
        • Spring (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    항해99
    에러
    카카오코딩테스트
    프로그래머스
    조합
    후기
    브루트포스
    괄호
    그리디
    SpringBoot
    미니프로젝트
    spring
    알고리즘
    김영한
    백준
    java
    실전프로젝트
    코딩테스트
    인프런
    jpa
    회고
    버그
    파이썬
    스파르타코딩클럽
    SFlash
    카카오인턴
    정리
    항해마켓
    해결
    orm
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
wookcode
[프로그래머스] Level 2, 메뉴 리뉴얼 (Python)
상단으로

티스토리툴바