728x90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
import java.util.*;
class Solution {
List<Map<String, Integer>> Foodmaps = new ArrayList<>();
int[] MaxCnt = new int[11];
void comb(char[] arr, int pos, StringBuilder sBuilder){
if(pos>= arr.length){
if(sBuilder.length()>=2){
int len = sBuilder.length();
int cnt = Foodmaps.get(len).getOrDefault(sBuilder.toString(),0)+1;
Foodmaps.get(len).put(sBuilder.toString(), cnt);
MaxCnt[len] = (cnt>MaxCnt[len])? cnt:MaxCnt[len];
}
return;
}
comb(arr, pos+1, sBuilder.append(arr[pos]));
sBuilder.setLength(sBuilder.length()-1);
comb(arr, pos+1, sBuilder);
}
public String[] solution(String[] orders, int[] course) {
for(int i=0; i<11; i++)
Foodmaps.add(new HashMap<String, Integer>());
for(String order : orders){
char[] arr = order.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;
}
}
|
cs |
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][JAVA] 합승 택시 요금 (그래프, DP, 플로이드 와샬) (0) | 2021.09.08 |
---|---|
[프로그래머스][JAVA] 순위 검색 (HashMap, 이진탐색, LowerBound찾기, 비트연산) (0) | 2021.09.07 |
[프로그래머스][JAVA] 신규 아이디 추천 (String) (0) | 2021.09.06 |
프로그래머스 - 숫자 야구 (완전탐색) (0) | 2019.12.13 |
프로그래머스 - 모의고사 (완전탐색) (0) | 2019.12.09 |