Jieunny์ ๋ธ๋ก๊ทธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๋ด์ค ํด๋ฌ์คํฐ๋ง ๋ณธ๋ฌธ
๐ ๋ฌธ์
์ฌ๋ฌ ์ธ๋ก ์ฌ์์ ์์์ง๋ ๋ด์ค, ํนํ ์๋ณด์ฑ ๋ด์ค๋ฅผ ๋ณด๋ฉด ๋น์ท๋น์ทํ ์ ๋ชฉ์ ๊ธฐ์ฌ๊ฐ ๋ง์ ์ ์ ํ์ํ ๊ธฐ์ฌ๋ฅผ ์ฐพ๊ธฐ๊ฐ ์ด๋ ต๋ค. Daum ๋ด์ค์ ๊ฐ๋ฐ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋ ์ ์ ์ฌ์ ํ๋ธ๋ ์ฌ์ฉ์๋ค์ด ํธ๋ฆฌํ๊ฒ ๋ค์ํ ๋ด์ค๋ฅผ ์ฐพ์๋ณผ ์ ์๋๋ก ๋ฌธ์ ์ ์ ๊ฐ์ ํ๋ ์ ๋ฌด๋ฅผ ๋งก๊ฒ ๋์๋ค.
๊ฐ๋ฐ์ ๋ฐฉํฅ์ ์ก๊ธฐ ์ํด ํ๋ธ๋ ์ฐ์ ์ต๊ทผ ํ์ ๊ฐ ๋๊ณ ์๋ "์นด์นด์ค ์ ์ ๊ฐ๋ฐ์ ๊ณต์ฑ" ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ๊ฒ์ํด๋ณด์๋ค.
- ์นด์นด์ค ์ฒซ ๊ณต์ฑ..'๋ธ๋ผ์ธ๋' ๋ฐฉ์ ์ฑ์ฉ
- ์นด์นด์ค, ํฉ๋ณ ํ ์ฒซ ๊ณต์ฑ.. ๋ธ๋ผ์ธ๋ ์ ํ์ผ๋ก ๊ฐ๋ฐ์ ์ฑ์ฉ
- ์นด์นด์ค, ๋ธ๋ผ์ธ๋ ์ ํ์ผ๋ก ์ ์ ๊ฐ๋ฐ์ ๊ณต์ฑ
- ์นด์นด์ค ๊ณต์ฑ, ์ ์ ๊ฐ๋ฐ์ ์ฝ๋ฉ ๋ฅ๋ ฅ๋ง ๋ณธ๋ค
- ์นด์นด์ค, ์ ์ ๊ณต์ฑ.. "์ฝ๋ฉ ์ค๋ ฅ๋ง ๋ณธ๋ค"
- ์นด์นด์ค "์ฝ๋ฉ ๋ฅ๋ ฅ๋ง์ผ๋ก 2018 ์ ์ ๊ฐ๋ฐ์ ๋ฝ๋๋ค"
๊ธฐ์ฌ์ ์ ๋ชฉ์ ๊ธฐ์ค์ผ๋ก "๋ธ๋ผ์ธ๋ ์ ํ"์ ์ฃผ๋ชฉํ๋ ๊ธฐ์ฌ์ "์ฝ๋ฉ ํ ์คํธ"์ ์ฃผ๋ชฉํ๋ ๊ธฐ์ฌ๋ก ๋๋๋ ๊ฑธ ๋ฐ๊ฒฌํ๋ค. ํ๋ธ๋ ์ด๋ค์ ๊ฐ๊ฐ ๋ฌถ์ด์ ๋ณด์ฌ์ฃผ๋ฉด ์นด์นด์ค ๊ณต์ฑ ๊ด๋ จ ๊ธฐ์ฌ๋ฅผ ์ฐพ์๋ณด๋ ์ฌ์ฉ์์๊ฒ ์ ์ฉํ ๋ฏ์ถ์๋ค.
์ ์ฌํ ๊ธฐ์ฌ๋ฅผ ๋ฌถ๋ ๊ธฐ์ค์ ์ ํ๊ธฐ ์ํด์ ๋ ผ๋ฌธ๊ณผ ์๋ฃ๋ฅผ ์กฐ์ฌํ๋ ํ๋ธ๋ "์์นด๋ ์ ์ฌ๋"๋ผ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋๋ค.
์์นด๋ ์ ์ฌ๋๋ ์งํฉ ๊ฐ์ ์ ์ฌ๋๋ฅผ ๊ฒ์ฌํ๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ ์ค์ ํ๋๋ก ์๋ ค์ ธ ์๋ค. ๋ ์งํฉ A, B ์ฌ์ด์ ์์นด๋ ์ ์ฌ๋ J(A, B)๋ ๋ ์งํฉ์ ๊ต์งํฉ ํฌ๊ธฐ๋ฅผ ๋ ์งํฉ์ ํฉ์งํฉ ํฌ๊ธฐ๋ก ๋๋ ๊ฐ์ผ๋ก ์ ์๋๋ค.
์๋ฅผ ๋ค์ด ์งํฉ A = {1, 2, 3}, ์งํฉ B = {2, 3, 4}๋ผ๊ณ ํ ๋, ๊ต์งํฉ A ∩ B = {2, 3}, ํฉ์งํฉ A ∪ B = {1, 2, 3, 4}์ด ๋๋ฏ๋ก, ์งํฉ A, B ์ฌ์ด์ ์์นด๋ ์ ์ฌ๋ J(A, B) = 2/4 = 0.5๊ฐ ๋๋ค. ์งํฉ A์ ์งํฉ B๊ฐ ๋ชจ๋ ๊ณต์งํฉ์ผ ๊ฒฝ์ฐ์๋ ๋๋์ ์ด ์ ์๋์ง ์์ผ๋ ๋ฐ๋ก J(A, B) = 1๋ก ์ ์ํ๋ค.
์์นด๋ ์ ์ฌ๋๋ ์์์ ์ค๋ณต์ ํ์ฉํ๋ ๋ค์ค์งํฉ์ ๋ํด์ ํ์ฅํ ์ ์๋ค. ๋ค์ค์งํฉ A๋ ์์ "1"์ 3๊ฐ ๊ฐ์ง๊ณ ์๊ณ , ๋ค์ค์งํฉ B๋ ์์ "1"์ 5๊ฐ ๊ฐ์ง๊ณ ์๋ค๊ณ ํ์. ์ด ๋ค์ค์งํฉ์ ๊ต์งํฉ A ∩ B๋ ์์ "1"์ min(3, 5)์ธ 3๊ฐ, ํฉ์งํฉ A ∪ B๋ ์์ "1"์ max(3, 5)์ธ 5๊ฐ ๊ฐ์ง๊ฒ ๋๋ค. ๋ค์ค์งํฉ A = {1, 1, 2, 2, 3}, ๋ค์ค์งํฉ B = {1, 2, 2, 4, 5}๋ผ๊ณ ํ๋ฉด, ๊ต์งํฉ A ∩ B = {1, 2, 2}, ํฉ์งํฉ A ∪ B = {1, 1, 2, 2, 3, 4, 5}๊ฐ ๋๋ฏ๋ก, ์์นด๋ ์ ์ฌ๋ J(A, B) = 3/7, ์ฝ 0.42๊ฐ ๋๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด ์ฌ์ด์ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ๋๋ฐ ์ด์ฉํ ์ ์๋ค. ๋ฌธ์์ด "FRANCE"์ "FRENCH"๊ฐ ์ฃผ์ด์ก์ ๋, ์ด๋ฅผ ๋ ๊ธ์์ฉ ๋์ด์ ๋ค์ค์งํฉ์ ๋ง๋ค ์ ์๋ค. ๊ฐ๊ฐ {FR, RA, AN, NC, CE}, {FR, RE, EN, NC, CH}๊ฐ ๋๋ฉฐ, ๊ต์งํฉ์ {FR, NC}, ํฉ์งํฉ์ {FR, RA, AN, NC, CE, RE, EN, CH}๊ฐ ๋๋ฏ๋ก, ๋ ๋ฌธ์์ด ์ฌ์ด์ ์์นด๋ ์ ์ฌ๋ J("FRANCE", "FRENCH") = 2/8 = 0.25๊ฐ ๋๋ค.
๐ก ์์ด๋์ด
st1, str2 ๊ฐ๊ฐ for๋ฌธ ๋๋ฉด์ ๋๊ฐ์ฉ ๋ถ๋ถ ์งํฉ์ ๊ตฌํด์ค๋ค.
์ ๊ทํํ์์ ์ฌ์ฉํด์ ๋ถ๋ถ ์งํฉ์ ์ซ์๋ ๊ณต๋ฐฑ, ํน์ ๊ธฐํธ๊ฐ ์์ผ๋ฉด ๋ฃ์ง์๊ณ , ์์ผ๋ฉด ์๋ฌธ์๋ก ๋ฐ๊ฟ์ ์ ๋ฐฐ์ด์ ๋ฃ์ด์ค๋ค.
(๋์๋ฌธ์ ๊ตฌ๋ถ ์ํ๋ฏ๋ก)
str1Arr, str2Arr ๋ฐฐ์ด์ ๊ฐ๊ฐ ๊ตฌํด์ค ๋ค์, str1Arr์ ๋๋ฉด์ ๊ทธ ์์๊ฐ str2Arr์ ์์ผ๋ฉด ๊ต์งํฉ ๊ฐ์๋ฅผ +1 ํด์ค๋ค.
์ด๋, ์ด๋ฏธ ํ๋ฒ ๊ต์งํฉ์ผ๋ก ์ ํ๋ ์์๋ ๋ค์์ ๊ฐ์ ์์๊ฐ ๋ ๋์์ ๋ ๋ ๊ต์งํฉ์ผ๋ก ์ ํ๋๋ฉด ์๋๋ฏ๋ก ๋น๊ต๋์์ธ str2Arr์์ ํ๋ฒ ๊ต์งํฉ ์ด์๋ ์์๋ ์ ๊ฑฐํด์ค๋ค.
์ด ๊ณผ์ ์ ๋ค ๊ฑฐ์น๊ณ , ๊ต์งํฉ ๊ฐ์์ ํฉ์งํฉ ๊ฐ์๋ฅผ ๊ตฌํด์ ๋๋ ์ค ๋ค์ 65536์ ๊ณฑํด์ค๋ค.
์ด๋ ๊ต์งํฉ์ ์์ผ๋ ํฉ์งํฉ์ ์๋ ๊ฒฝ์ฐ ๋ต์ 0์ด๊ณ , ๊ต์งํฉ๊ณผ ํฉ์งํฉ ๋๋ค ์๋ ๊ฒฝ์ฐ ๋ต์ 65536์ด ๋์ด์ผํ๋ฏ๋ก ๋ถ๊ธฐ๋ฅผ ๋๋ ๋ต์ ํ ๋นํด์ค๋ค.
โ๏ธ ํ์ด
function solution(str1, str2) {
var answer = 0;
let eng = /^[a-zA-Z]*$/;
let str1Arr = [];
let str2Arr = [];
let interCount = 0;
let unionCount = 0;
for(let i=0; i<str1.length-1; i++){
let set = str1.slice(i, i+2);
if(eng.test(set) === true) str1Arr.push(set.toLowerCase());
}
for(let i=0; i<str2.length-1; i++){
let set = str2.slice(i, i+2);
if(eng.test(set) === true) {
str2Arr.push(set.toLowerCase());
}
}
let str2Length = str2Arr.length;
//str2Length๋ ๊ต์งํฉ ์์๋ฅผ ์ญ์ ํ ๊ฑฐ๊ธฐ๋๋ฌธ์ ํฉ์งํฉ ๊ตฌํ ๋ ์ฌ์ฉํ ๊ธธ์ด๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌํด์ค๋ค.
for(let i=0; i<str1Arr.length; i++){
if(str2Arr.includes(str1Arr[i])) {
str2Arr.splice(str2Arr.indexOf(str1Arr[i]), 1);
interCount++;
}
}
unionCount = (str1Arr.length + str2Length) - interCount;
if(interCount === 0 && unionCount === 0) answer = 65536
else if(interCount === 0 && unionCount !== 0) answer = 0;
else answer = Math.floor((interCount / unionCount) * 65536)
return answer;
}
'Study > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ณต์ ์ฐ์ฑ (0) | 2023.04.03 |
---|---|
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ํ๊ฒ ๋๋ฒ (0) | 2023.03.09 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (0) | 2023.03.03 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - ๊ธฐ๋ฅ ๊ฐ๋ฐ (0) | 2023.03.02 |
[JS] ํ๋ก๊ทธ๋๋จธ์ค - n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ (0) | 2023.02.28 |