알고리즘

[BOJ] 25192 - 인사성 밝은 곰곰이(JS)

로돌씨 2024. 10. 4. 10:02

 

나의 풀이

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