알고리즘

[BOJ] 26069 - 붙임성 좋은 총총이(JS)

로돌씨 2024. 10. 7. 14:34

나의 풀이

let fs = require("fs");

let input = fs.readFileSync('예제.txt').toString().trim().split("\n");
const N = input.shift();

let meetFriends = [] ;
    for(let i = 0; i < N ; i++){
        let [a,b] = input[i].split(" ")
        if(a == "ChongChong" || b == "ChongChong" ){
            for(let j = i ; j < N; j ++){
                meetFriends.push(input[j])
            }
        }
    }
let arr = meetFriends.map(a=> a.split(" ")).flat();
let set = new Set(arr);
console.log(set.size)

결과는 실패 ...

set의 사용법이 미숙했던 터라 set를 그냥 배열의 중복을 제거하는 방식으로만 써서 코드가 지저분했다 . 

그리고 만약 다음 줄이 총총이를 마주치지않은 두사람이라면 춤을 안출텐데 그냥 총총이를 만난시점의

다음 줄을 모두 추가해서 틀린 것 같다.

 

수정한 풀이

let fs = require("fs");

let input = fs.readFileSync('예제.txt').toString().trim().split("\n");
const N = input.shift();

let meetFriends = new Set();
meetFriends.add("ChongChong");

    for(let i = 0; i < N ; i++){
        let [a,b] = input[i].split(" ")
        if(meetFriends.has(a) || meetFriends.has(b)){
            meetFriends.add(a)
            meetFriends.add(b)
        }
    }
console.log(meetFriends.size)

 

처음부터 Set 객체를 만들어 거기에 총총이를 추가하고 배열을 순환하면서 a,b중 총총이를 만난 인원이 있으면 set객체에 추가 ,

그리고 그 추가한 인원을 순환하며 set객체에 들어있는사람 , 즉 총총이를 만났던 사람이면 모두 추가하고 set의 size를 출력했다.