2021 KAKAO BLIND : 메뉴 리뉴얼 (프로그래머스)

2021. 2. 5. 10:13코딩테스트

728x90
반응형

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

 

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

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

programmers.co.kr

 

다른 사람들 코드는 라이브러리 사용한게 많아서 라이브러리 안쓴 코드 공유드려요

 

def solution(orders, course):
    answer = []
    dictlist = {}
    for i in course:
        dictlist[i] = {}
    
    def comb(s, n, res):
        l = len(res)
        if n == len(s):
            if l in course:
                d = dictlist[l]
                if res in d:
                    d[res] += 1
                else:
                    d[res] = 1
            return
        else:
            comb(s, n+1, res)
            res += s[n]
            comb(s, n+1, res)

    for i in orders:
        comb(sorted(i), 0, '')

    for i in dictlist.values():
        if i:
            answer+= [key for key in i.keys() if i[key] == max(i.values()) and i[key] != 1]
    return sorted(answer)

comb함수 부분이 itertools.combinations를 백트래킹으로 직접 구현한거구요

dictlist로 구현한 부분은 collections를 잘 쓰면 더 쉽게 처리가 가능하더라구요

라이브러리써서 잘 푼 코드는 프로그래머스에서 다른 사람 코드보면 잘 나와있으니까 생략할께요

두 방법으로 다 풀어보는게 좋은것같아요

 

공식해설은 아래에 있습니다

tech.kakao.com/2021/01/25/2021-kakao-recruitment-round-1/

 

2021 카카오 신입공채 1차 온라인 코딩 테스트 for Tech developers 문제해설

지난 2020년 9월 12일 토요일 오후 2시부터 7시까지 5시간 동안 2021 카카오 신입 개발자 공채 1차 코딩 테스트가 진행되었습니다. 테스트에는 총 7개의 문제가 출제되었으며, 개발 언어는 C++, Java, Jav

tech.kakao.com

프로그래머스 2021 KAKAO BLIND RECRUITMENT 메뉴 리뉴얼 파이썬 python 카카오 신입공채 온라인 코딩 테스트