Programmers - 메뉴 리뉴얼 with JAVA
문제 여러명의 손님들이 각자 주문했던 음식 리스트가 있다. 이를 활용해 최소 2명의 손님이 주문한 2개이상의 음식세트를 만들려고 한다. 이 때, 음식세트의 주문수가 최대인것들을 정렬해서 출력하라. 로직 1. 각 주문마다 course에 맞는 조합 맵 구하기 : map , 조합마다 글자 길이에 맞는 최대값 갱신 : maxCount 2. 조합의 길이마다 최대값이 2보다 같거나 크면서 맵의 값(주문 된 횟수)이 최대값인 경우 결과에 반영 : answer 3. answer 정렬 예를 들어, [1, 2, 3, 4, 5]가 있다고 가정할 때 (각 번호는 음식 번호를 의미) 음식의 종류 3개로 만들 수 있는 조합은 [1, 2, 3] [1, 2, 4] [1, 2, 5] [1, 3, 4] 이런식으로 나갈 것이다. 이러한 ..
Programmers - 뒤에 있는 큰 수 찾기 with JAVA (V)
문제 예를 들어, [1, 2, 3, 4, 5] 가 있을 때, 해당 수보다 뒤에있으면서 가장 가깝고 해당 수보다 큰 수를 구하고 없으면 -1을 넣은 결과를 출력하라. 로직 1. 결과를 모두 -1로 초기화한다. 2. 스택에 해당 인덱스 값을 순차적으로 넣는다. 3. 스택 마지막부터 확인하면서(후입 선출) 현재 값보다 꺼낸 인덱스에 해당하는 값이 작다면 스택에서 해당 수를 빼고 결과를 현재 값으로 설정함을 반복한다. (만약, 전의 값이 크다면 종료) 4. 위의 과정을 반복한다. 대략 시간 복잡도는 O(N)에 가능하다. 예시 : [9, 1, 5, 3, 6, 2] Stack - Value - result [0] - [9] - [-1, -1, -1, -1, -1, -1] [0, 1] - [9, 1] - [-1, -..