링크

순위검색

난이도

  • 프로그래머스 난이도가 왜 2
    • 어떻게 조합할지가 중요

문제요약

  • 각자 주문한 음식리스트가 있을때, 원하는 세트개수만큼 2명이상 공통적으로 주문한 음식 리스트를 출력
    • 단 세트개수가 같은게 여러개이면 많이 주문한 세트메뉴를 출력

접근

    1. 나오는 모든 음식의 조합을 만들고 갯수세기
      • 엄청 오래걸림
    1. 사람마다 지정된 코스의 갯수만큼 조합을 만들어서 저장
      • 그 조합들을 코스 갯수대로 카운트해서 최대인것만 answer로

간단 알고리즘

  • 배열구조
    • 2차원으로 구성
    • 세트메뉴갯수 index,해당인원에서 나온 세트메뉴
  • 해당인원이 시킨음식들 확인
    • 해당 음식리스트로 조합을 만든다.
    • 나온 조합에서 원하는 세트개수인것만 저장
  • 저장된 배열이 예를들면 2,3,5라는 세트메뉴를 만들때 0번째에는 2개로 구성된 메뉴가, 1번째에는 3개로 구성된 메뉴가 있다.
  • 각 배열내의 세트메뉴들을 count
  • 최대갯수의 세트메뉴를 새로운 배열에 저장
  • 재 정렬하여 마무리

후기

  • 16개 가지수를 전부 저장해서 한다는게 비효율적인거처럼 보이는데 효율적으로 잘 된다.
  • 위와같은 방식을 바로 생각하면 빠르게 구현이 되지만, 방법을 모르니 아예 손이 안갔다.
  • 어떻게 조합하고 계산해야 시간초과 안나는지를 잘 알아야 된다.