이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

코딩테스트

[프로그래머스][C++] 메뉴 리뉴얼

이쿠우우 2022. 3. 21. 21:39
반응형

https://programmers.co.kr/learn/courses/30/lessons/72411

 

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

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

programmers.co.kr

글쓴이의 답

개인적인 풀이 임으로

이것보다 더 좋은 알고리즘은 많음...

이렇게도 풀이하는구나.. 공유하기 위해 올림...

from itertools import combinations

def solution(orders, course):
    answer = []
    ordersList = []
    
    for data in orders:
        dataSize = len(data)
        dataTemp = []                        

        for num in range(dataSize):
            dataTemp.append(data[num])
            dataTemp = sorted(dataTemp)
        ordersList.append(dataTemp)        
        
    for courseSize in course:
        courseResult = {}
        
        for data in ordersList:            
            case = list(combinations(data, courseSize))
            caseSize = len(case)
            
            for num in range(caseSize):
                tempStr = ''.join(case[num])
                if tempStr in courseResult:
                    count = courseResult.get(tempStr)
                    count += 1
                    courseResult[tempStr] = count
                else :
                    courseResult[tempStr] = 1
                    
        countResult = 2
        for val in courseResult.values():
            if val > countResult:
                countResult = val
        
        for key, val in courseResult.items():
            if countResult == val:
                answer.append(key) 
    
    answer.sort()
    
    return answer

꾸준히 하다보면 실력이 늘겠지..

반응형