본문 바로가기
Algorithm

BruteForce,자료구조_21 카카오 메뉴 리뉴얼

by forkballpitch 2021. 11. 10.
728x90
728x90

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

 

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

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

programmers.co.kr

출처: 

https://www.youtube.com/watch?v=22tBC3YXVPA&list=PL6YHvWRMtz7DhuPHdUZ0WLB5fNO729mbm&index=2 

static List<Map<String,Integer>> FoodMaps = new ArrayList<>();
    int[] MaxCnt = new int[11];
    

    void comb(char[] str, int pos, StringBuilder candi){
        if(pos >= str.length){
            int len = candi.length();
            if(len>=2){
                int cnt = FoodMaps.get(len).getOrDefault(candi.toString(),0) + 1;
                FoodMaps.get(len).put(candi.toString(),cnt);
                MaxCnt[len] = Math.max(MaxCnt[len],cnt);
            }
            return;
        }
        //선택하고
        comb(str,pos+1, candi.append(str[pos]));
        candi.setLength(candi.length()-1);
        //선택하지 않는 
        comb(str, pos+1,candi);
    }

    public String[] solution(String[] orders, int[] course){
        for(int i = 0; i <11; ++i)
            FoodMaps.add(new HashMap<String,Integer>());

        for(String str: orders){
            char[] arr = str.toCharArray();
            Arrays.sort(arr);
            comb(arr,0, new StringBuilder());
        }

        List<String> list = new ArrayList<>();
        for(int len: course){
            for(Map.Entry<String,Integer> entry : FoodMaps.get(len).entrySet()){
                if(entry.getValue() >= 2 && entry.getValue() == MaxCnt[len]){
                    list.add(entry.getKey());
                }
            }
        }

        Collections.sort(list);

        String[] answer = new String[list.size()];
        for(int i = 0; i < list.size(); ++i){
            answer[i] = list.get(i);
        }
        return answer;
    }
728x90
728x90

'Algorithm' 카테고리의 다른 글

시뮬레이션_softeer 비밀메뉴  (0) 2021.11.12
시뮬레이션_Softeer 전광판  (0) 2021.11.12
BruteForce_백준 연산자 끼워넣기  (0) 2021.11.10
백트래킹DFS_백준 N과M(4)  (0) 2021.11.09
백트래킹DFS_백준 N과M(1)  (0) 2021.11.09