반응형
https://school.programmers.co.kr/learn/courses/30/lessons/17677
import java.util.ArrayList;
class Solution {
public int solution(String str1, String str2) {
int answer = 0;
ArrayList<String> arr1 = new ArrayList<>();
ArrayList<String> arr2 = new ArrayList<>();
// 대문자로 변경
str1 = str1.toUpperCase();
str2 = str2.toUpperCase();
// 한글자씩 뽑아서 특수문자 제거 후 arr1 에 추가
for (int i=0; i<str1.length()-1; i++) {
char one = str1.charAt(i);
char two = str1.charAt(i+1);
if (one >= 'A' && one <= 'Z' && two >= 'A' && two <= 'Z') {
arr1.add(one + "" + two);
}
}
// 한글자씩 뽑아서 특수문자 제거 후 arr2 에 추가
for (int i=0; i<str2.length()-1; i++) {
char one = str2.charAt(i);
char two = str2.charAt(i+1);
if (one >= 'A' && one <= 'Z' && two >= 'A' && two <= 'Z') {
arr2.add(one + "" + two);
}
}
// arr1 과 arr2 를 비교 후, 같은 값은 제거 (교집합 구하기)
int min = 0; // 교집합 증감 함수
for (int i=0; i<arr1.size(); i++) {
for (int j=0; j<arr2.size(); j++) {
if (arr1.get(i).equals(arr2.get(j))) {
arr2.remove(j);
min++;
break;
}
}
}
double ans = 0;
ans = (double)min / (double)(arr1.size() + arr2.size());
if ((double)(arr1.size() + arr2.size()) == 0) return 1 * 65536;
else return (int)(ans * 65536);
}
}
※ Character.isAlphabetic 함수를 이용하면 if (one >= 'A' && one <= 'Z') 부분을 생략할 수 있다.
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스]JAVA - Level3. N으로 표현 (0) | 2022.07.09 |
---|---|
[프로그래머스]JAVA - Level3. 입국심사 (0) | 2022.07.05 |
[프로그래머스]JAVA - Level 2. 문자열 압축 (0) | 2022.04.17 |
[프로그래머스]JAVA - Level 2. 오픈채팅방 (0) | 2022.04.11 |
[프로그래머스]JAVA - Level 1. 완주하지 못한 선수 (0) | 2022.04.08 |