이론상으로 어려운 문제는 아니었다. string 을 param 으로 받아 2개씩 쪼개는 function과 그 function을 통해서 나온 두가지의 list의 교집합, 합집합을 구하면 되는 문제였다.
다만 교집합과 합집합을 구하는 부분에서 두가지 list에서 동시 제거를 하다보니 오류가 발생하여 시간이 필요했다.
한가지 list에서 삭제하고 교집합은 따로 리스트에 담아 그 리스트의 크기를 측정하여 교집합의 크기를
두가지 리스트의 크기를 더하여 합집합의 크기를 구하였다.
import java.util.*;
class Solution {
public int solution(String str1, String str2) {
int answer = 0, n = 0, u = 0;
ArrayList<String> list1 = makeList(str1.toLowerCase());
ArrayList<String> list2 = makeList(str2.toLowerCase());
ArrayList<String> intersection = new ArrayList<>();
for (String s : list1) {
if (list2.contains(s)) {
intersection.add(s);
list2.remove(s);
}
}
n = intersection.size();
u = list1.size() + list2.size();
if (u == 0)
answer = 65536;
else
answer = (int) ((double) n / (double) u * 65536);
return answer;
}
public ArrayList<String> makeList(String str) {
ArrayList<String> list = new ArrayList<>();
String s;
for (int i = 0; i < str.length() - 1; i++) {
if ('a' <= str.charAt(i) && 'z' >= str.charAt(i)
&& 'a' <= str.charAt(i + 1) && 'z' >= str.charAt(i + 1)) {
s = str.substring(i, i + 2);
list.add(s);
}
}
return list;
}
}
String
-substring(1,3) =>1에서 2까지
-charAt(0)
-length()
ArrayList
-size()
-remove() => 같은값이 여러개면 맨 처음 하나만 지움
'Algorithm & Data Structures > Programers' 카테고리의 다른 글
Lv 2. 타겟 넘버 (0) | 2024.06.20 |
---|---|
Lv 2. 전화번호 목록 (0) | 2024.06.19 |
Lv 2. 피로도 (0) | 2024.06.17 |
Lv 2. 프로세스 (0) | 2024.06.14 |
Lv 2. 튜플 (0) | 2024.06.13 |