나의 풀이
let fs = require("fs");
let input = fs.readFileSync('예제.txt').toString().trim().split("\n");
let N = input.shift();
input = input.join(" ");
let arr = []
let answer = 0;
let newArr = input.split("ENTER")
for(let i = 0; i <newArr.length; i++){
if(newArr[i] !== ''){
arr = newArr[i].trim().split(" ")
if(arr !== ''){
let set = new Set(arr);
answer += [...set].length
}
}
}
console.log(answer)
처음에는 이렇게 풀었었다. ENTER를 기준으로 문자열을 나누어 배열로만들고 그 배열에서 set을 이용해 중복을 없애고 수를 카운트하여 계산했다. 결과는 실패... 무엇이 문제인가 찾다가 예시로 ENTER 를 연속으로 추가하니 빈문자열이 set객체에 들어가 그 수를 카운트 하고있었다...
수정한 코드
let fs = require("fs");
let input = fs.readFileSync('예제.txt').toString().trim().split("\n");
let N = input.shift();
input = input.join(" ");
let answer = 0;
// ENTER로 split한 후, 각 요소에서 공백을 제거하고 빈 문자열을 필터링
let newArr = input.split("ENTER").map(x => x.trim()).filter(x => x !== "");
for (let i = 0; i < newArr.length; i++) {
if (newArr[i] !== '') {
let arr = newArr[i].trim().split(" ").filter(x => x !== ""); // 공백 제거 후 빈 문자열 필터링
let set = new Set(arr); // 중복을 제거한 후 카운트
answer += set.size;
}
}
console.log(answer);
따로 set를 다시 배열로 만들어 길이를 구하는것을 size를 이용해 크기를 구해 쓸데없는 코드를 줄였다.
그리고 filter를 이용해 빈문자열이 아닐 경우에만 추가했다. 결과는 성공!
'알고리즘' 카테고리의 다른 글
[BOJ] 2108 - 통계학 (JS) (1) | 2024.10.08 |
---|---|
[BOJ] 26069 - 붙임성 좋은 총총이(JS) (0) | 2024.10.07 |
[BOJ] 11050 - 이항계수1(JS) (0) | 2024.09.19 |
[BOJ]4949 - 균형잡힌 세상(JS) (0) | 2024.08.13 |
[BOJ]28279 - 덱2(JS) (0) | 2024.08.13 |