🔒Algorithm

백준[JS] > 1058번 친구

devWarrior 2024. 10. 31. 22:10

 

문제 링크

https://www.acmicpc.net/problem/1058

 

해설

큰 문제없이 풀 수 있었다. 중복을 따로 처리하기 귀찮아 set을 이용하였다. 

const fs = require("fs");
const input = fs.readFileSync("/dev/stdin").toString().split("\n");

const cnt = Number(input[0])

// [N,Y,N,N,N]
// [N,Y,N,N,N]
// [N,Y,N,Y,N]
// [N,N,Y,N,Y]
// [N,n,N,Y,N]

let map = [];
for (let i = 1; i <= input.length - 1; ++i) {
    map.push(input[i].split(""));
}

let answer = 0;
for (let i = 0; i < map.length; ++i) {
    let set = new Set();
    for (let j = 0; j < map[0].length; ++j) {
        if (j !== i && map[i][j] === "Y") {
            set.add(j);
        }
    }
    let arr = [...set];
    arr.forEach((p) => {
        for (let z = 0; z < map[0].length; ++z) {
            if (z !== i && map[p][z] === "Y") {
                set.add(z);
            }
        }
    });

    if (set.size === cnt - 1) {
        console.log(set.size);
        return;
    } else {
        answer = Math.max(answer, set.size);
    }
}
console.log(answer);