반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 소켓
- Nestjs
- typescript
- 가천대
- 크롤링
- 수학
- dfs
- javascript
- 쉬운 문제
- 자바스크립트
- 그래프
- 알고리즘
- dp
- Node.js
- 타입 챌린지
- 백준
- BFS
- 프로그래머스
- socket
- 프로그래머스 레벨 2
- TCP
- 문자열
- Crawling
- HTTP
- 레벨 1
- HTTP 완벽 가이드
- type challenge
- ip
- Algorithm
- 타입스크립트
Archives
- Today
- Total
kakasoo
[node.js] 뉴스 클러스터링 ( 프로그래머스 레벨2 ) 본문
반응형
// 프로그래머스 레벨2 [1차] 뉴스 클러스터링을 풀었습니다.
// const lastOnlyAlphabet = (str) => {
// const aCode = 'A'.charCodeAt();
// const zCode = 'Z'.charCodeAt();
// return str.toUpperCase().split('').filter((el) => {
// const cur = el.charCodeAt();
// if (aCode <= cur && cur <= zCode) {
// return true;
// }
// return false;
// }).join('');
// }
const makeStrArray = (str) => {
const aCode = "A".charCodeAt();
const zCode = "Z".charCodeAt();
const answer = [];
for (let i = 0; i < str.length - 1; i++) {
const cur1 = str[i].charCodeAt();
const cur2 = str[i + 1].charCodeAt();
if (aCode <= cur1 && cur1 <= zCode && aCode <= cur2 && cur2 <= zCode) {
answer.push(str[i] + str[i + 1]);
}
}
return answer;
};
const makeCommonSet = (arr1, arr2) => {
const answer = [];
while (arr1.length && arr2.length) {
const arrInstance1 = arr1.pop();
if (arr2.includes(arrInstance1)) {
arr2.splice(arr2.indexOf(arrInstance1), 1);
answer.push(arrInstance1);
}
}
return answer;
};
const makeSumSet = (arr1, arr2) => {
const answer = [];
while (arr1.length && arr2.length) {
const arrInstance1 = arr1.pop();
if (arr2.includes(arrInstance1)) {
arr2.splice(arr2.indexOf(arrInstance1), 1);
}
answer.push(arrInstance1);
}
while (arr1.length) {
const arrInstance1 = arr1.pop();
answer.push(arrInstance1);
}
while (arr2.length) {
const arrInstance2 = arr2.pop();
answer.push(arrInstance2);
}
return answer;
};
const solution = (str1, str2) => {
str1 = str1.toUpperCase();
str2 = str2.toUpperCase();
const strArr1 = makeStrArray(str1);
const strArr2 = makeStrArray(str2);
// console.log(strArr1);
// console.log(strArr2);
const commonSet = makeCommonSet([...strArr1], [...strArr2]);
const sumSet = makeSumSet([...strArr1], [...strArr2]);
// console.log(commonSet);
// console.log(sumSet);
const rate = sumSet.length ? commonSet.length / sumSet.length : 1;
return parseInt(rate * 65536);
};
반응형
'프로그래밍 > 알고리즘 풀이' 카테고리의 다른 글
[node.js] 행렬 테두리 회전하기 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |
---|---|
[node.js] 메뉴 리뉴얼 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |
[node.js] 배달 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |
[node.js] 예상 대진표 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |
[node.js] 게임 맵 최단 거리 ( 프로그래머스 레벨2 ) (0) | 2021.06.30 |