코린이 탈출기
[2018 KAKAO BLIND RECRUITMENT][JAVASCRIPT] 뉴스 클러스터링 본문
소요시간 : 50분 - 1시간
<문제 풀이 Logic>
1. 대소문자 구분을 하지 않기 때문에 각 str을 모두 소문자로 만들어준다.
2. str을 두 글자씩 끊어서 tmp에 저장하고 tmp가 모두 알파벳으로 돼있다면 str_arr에 저장한다.
-> 아스키코드 활용(a~z: 97~122)
str_arr 저장형태 : {tmp: tmp 개수}
3. str_arr의 key를 str_key 배열에 넣어두고 이 배열을 순회하며 두 str_arr에 key가 중복하는 경우에 Intersect에 그 중 min값을 더해준다.
4. Union은 각 str_arr의 개수를 모두 센 Total에서 Intersect를 빼주면 된다.
-전체 코드-
<!DOCTYPE html>
<body>
<script>
function solution(str1, str2) {
var answer = 0;
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
let str1_arr = [];
let str2_arr = [];
// console.log(str1);
// console.log(str2);
for(let i = 0; i<str1.length-1; i++)
{
let tmp = str1.slice(i, i+2);
if(tmp.charCodeAt(0)>=97 && tmp.charCodeAt(0)<=122)
{
if(tmp.charCodeAt(1)>=97 && tmp.charCodeAt(1)<=122)
{
if(str1_arr[tmp] != null)
str1_arr[tmp]++;
else
str1_arr[tmp] = 1;
}
}
}
//97~122
for(let i = 0; i<str2.length-1; i++)
{
let tmp = str2.slice(i, i+2);
if(tmp.charCodeAt(0)>=97 && tmp.charCodeAt(0)<=122)
{
if(tmp.charCodeAt(1)>=97 && tmp.charCodeAt(1)<=122)
{
if(str2_arr[tmp] != null)
str2_arr[tmp]++;
else
str2_arr[tmp] = 1;
}
}
}
console.log(str1_arr);
console.log(str2_arr);
let str1_key = Object.keys(str1_arr);
let str2_key = Object.keys(str2_arr);
console.log(str1_key);
console.log(str2_key);
let Total = 0;
let Union = 0;
let Intersect = 0;
for(let i = 0; i<str1_key.length; i++)
{
for(let j = 0; j<str2_key.length; j++)
{
if(str1_key[i] == str2_key[j])
{
Intersect += Math.min(str1_arr[str1_key[i]], str2_arr[str2_key[j]]);
break;
}
}
}
for(let i= 0; i<str1_key.length; i++)
{
Total += str1_arr[str1_key[i]];
}
for(let i = 0; i<str2_key.length; i++)
{
Total += str2_arr[str2_key[i]];
}
Union = Total - Intersect;
// console.log(Total);
// console.log(Union);
// console.log(Intersect);
if(Union == 0 && Intersect == 0)
answer = 65536;
else
answer = Math.floor(Intersect/Union * 65536);
console.log(answer);
return answer;
}
solution("FRANCE", "french")
solution("handshake","shake hands");
solution("aa1+aa2", "AAAA12")
solution("E=M*C^2", "e=m*c^2")
</script>
</body>
'문제 풀이' 카테고리의 다른 글
[백준 9465][Python][DP] 스티커 (3) | 2020.11.09 |
---|---|
[백준 12015][Python] 가장 긴 증가하는 부분 수열 (0) | 2020.11.06 |
[2018 KAKAO BLIND RECRUITMENT][JAVASCRIPT] 셔틀버스 (0) | 2020.09.11 |
[2019 KAKAO BLIND RECRUITMENT][JAVASCRIPT] 길 찾기 게임 (0) | 2020.09.08 |
[2019 KAKAO BLIND RECRUITMENT][JAVASCRIPT] 무지의 먹방라이브 (0) | 2020.09.07 |