백준 SILVER 2(친구)
-
사용 언어 : javascript
-
해결 날짜 : 2023-02-01
-
해결 방법 :
- 2-친구가 되기 위한 조건은 서로 친구이거나, 건너서 친구이거나
- 각 친구 사이를 돌며 서로 직접 친구인지 체크후 map에 저장
- 건너서 친구인 값 저장 후 map에 저장
- map에 저장된 값은 각 인덱스 별 친구인 인덱스 값
- 이 값은 중복된 값이 포함되어 있으므로 중복 제거 후
- 가장 긴 2-친구를 가진 사람의 2-친구 수 반환
- 2-친구가 되기 위한 조건은 서로 친구이거나, 건너서 친구이거나
-
회고 :
- 중복 제거 생각하기
- 길이가 0일 때 reduce 호출 불가능한 것 생각하기
-
코드
const fs = require('fs'); const filePath = process.platform === 'linux' ? '/dev/stdin' : '../input.txt'; const input = fs.readFileSync(filePath).toString().trim(); solution(input); function solution(props) { props = props.split('\n').slice(1); const map = new Map(); props.forEach((prop, index) => { const temp = []; prop.split('').forEach((isFriend, i) => { if (isFriend === 'Y') { map.set(index, [...(map.get(index) || []), i]); temp.push(i); } }); temp.forEach((e, i) => { map.set(e, [...(map.get(e) || []), ...temp.slice(0, i), ...temp.slice(i + 1)]); }); }); const uniqueArray = [...map.entries()].map(([key, value]) => [key, [...new Set(value)]]); console.log( uniqueArray.length ? uniqueArray.reduce((a, b) => (a[1].length > b[1].length ? a : b))[1].length : 0, ); }
-
출처: 백준