** 코드는 맨 아래
(설명)
(예시)
(고려사항)
(출력형식)
(코드)
import java.util.HashMap;
class Solution {
public int solution(String str1, String str2) {
int answer = 0;
int sum1=0, sum2=0, inter=0;
HashMap <String, Integer> map1 = new HashMap<>();
HashMap <String, Integer> map2 = new HashMap<>();
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
String match = "^[a-zA-Z]*$";
// 집합 A 개수 구하기
for(int i=0; i<str1.length()-1; i++){
String str = str1.substring(i, i+2);
if(!Pattern.matches(match, str)) continue;
sum1++;
if(map1.containsKey(str))
map1.put(str, (map1.get(str)+1));
else
map1.put(str, 1);
}
// 집합 B 개수 구하기
for(int j=0; j<str2.length()-1; j++){
String str = str2.substring(j, j+2);
if(!Pattern.matches(match, str)) continue;
sum2++;
if(map2.containsKey(str))
map2.put(str, (map2.get(str)+1));
else
map2.put(str, 1);
}
// 집합 A, B의 교집합 구하기
for(String key: map1.keySet())
if(map2.containsKey(key))
inter += map1.get(key)>map2.get(key) ? map2.get(key) : map1.get(key);
// 예외 처리하기
float tmp = (float)inter/(float)(sum1+sum2-inter);
try{
int value = inter/(sum1+sum2-inter);
}catch(ArithmeticException e){
tmp = 1;
}
answer =(int)(65536 * tmp);
return answer;
}
}
'문제풀이 > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 오픈채팅방 (시간복잡도 빅오 O(n)) (0) | 2022.03.30 |
---|---|
[JAVA] 프로그래머스 - 야근지수 (0) | 2021.02.17 |
[JAVA] 프로그래머스 - 가장 긴 팰린드롬 (0) | 2021.02.16 |
[JAVA] 프로그래머스 - 여행경로 (0) | 2021.02.07 |
[JAVA] 프로그래머스 - 디스크 컨트롤러 (0) | 2021.02.02 |
댓글