알고리즘/프로그래머스

[프로그래머스]JAVA - Level 2. 뉴스 클러스터링

K.두부 2022. 6. 29. 23:12
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/17677

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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') 부분을 생략할 수 있다.

 

 

 

반응형