728x90
하.. map에 부분집합 저장할 때 누적이 안되고 자꾸 1로 갱신된다.. getOrDefault 썼는데도 이러네
이유 찾았다 또 스펠링임 이거 프로그래머스 ide가 이상한게 컴파일 에러를 제대로 못찾는 것 같음
Line:60~61번
subsetMap.put(subset, subsetMap.getOrDefault(subsetMap, 0)+1);
-> subsetMap.put(subset, subsetMap.getOrDefault(subset, 0)+1);
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
67
68
|
import java.util.*;
class Solution {
public int solution(String str1, String str2) {
str1 = str1.toUpperCase();
str2 = str2.toUpperCase();
// System.out.println(str1);
// System.out.println(str1.matches("^[A-Z]*$"));
double jacquard = getJacquard(str1, str2);
return (int)(jacquard*65536);
}
private double getJacquard(String str1, String str2){
Map<String,Integer> subsetMap1 = subsetMap(str1);
Map<String,Integer> subsetMap2 = subsetMap(str2);
// A, B 모두 공집합
if(subsetMap1.size()+subsetMap2.size()==0) return 1;
int subsetNum1 = 0;
int subsetNum2 = 0;
int intersectionNum = 0; // 교집합 숫자
for(Map.Entry<String,Integer> e : subsetMap1.entrySet()){
// System.out.println(e.getKey()+" "+e.getValue());
subsetNum1 += e.getValue();
}
for(Map.Entry<String,Integer> e : subsetMap2.entrySet()){
// System.out.println(e.getKey()+" "+e.getValue());
subsetNum2 += e.getValue();
}
for(Map.Entry<String,Integer> e : subsetMap1.entrySet()){
intersectionNum += Math.min(e.getValue(),
subsetMap2.getOrDefault(e.getKey(), 0));
}
// System.out.println(subsetNum1);
// System.out.println(subsetNum2);
// System.out.println(intersectionNum);
// 공집합은 A+B-(AnB)
int cosetNum = subsetNum1 + subsetNum2 - intersectionNum;
return intersectionNum/(double)cosetNum;
}
// str의 부분집합 subset을 분석한 map
private Map<String, Integer> subsetMap(String str){
Map<String, Integer> subsetMap = new HashMap<>();
for(int i=0; i<str.length()-1; i++){
String subset = str.substring(i,i+2);
if(subset.matches("^[A-Z]*$")){
subsetMap.put(subset, subsetMap
.getOrDefault(subset, 0)+1);
}
}
return subsetMap;
}
}
|
cs |
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
1 ★★★ [프로그래머스][JAVA] 수식 최대화 (순열) (0) | 2022.03.24 |
---|---|
[프로그래머스][JAVA] 거리두기 확인하기 (DFS) (0) | 2022.03.19 |
[프로그래머스][JAVA] 괄호 변환 (재귀, 문자열) (0) | 2022.03.19 |
[프로그래머스][JAVA] 메뉴 리뉴얼 (조합, 백트래킹) (0) | 2022.03.18 |
[프로그래머스][JAVA] 행렬 테두리 회전하기 (구현) (0) | 2022.03.18 |