반응형
문제
나의 풀이
모르겠다.
참조
위 블로그와 동일한 코드입니다.
위 블로그를 보면서 따라 만들어 보고, 왜 이런지 고민해보았다.
function solution(n, results) {
var answer = 0;
//배열 선언
let arr = Array.from({length:n} , (_,i)=>Array.from({length:n},(_,j)=> i===j ? 0 : false))
//손실되지 않은 정보 적용, 이기면 1, 지면 -1
results.forEach(([start,end])=>{
arr[start-1][end-1] =1
arr[end-1][start-1] =-1
})
for(let m = 0 ; m < n;m++){
for(let i = 0 ; i < n;i++){
for(let j = 0 ; j < n;j++){
// i가 m을 이기고, m이 j를 이기면 i가 j를 이긴 것으로 간주 할 수 있다.
if(arr[i][m] === 1 && arr[m][j] === 1){
arr[i][j] =1
}
if(arr[i][m] === -1 && arr[m][j] === -1){
arr[i][j] = -1
}
}
}
}
for(let i = 0 ; i < n;i++){
let hasFalse = false;
for(let j = 0 ; j < n;j++){
if(arr[i][j] === false){
hasFalse = true;
break;
}
}
// 모든 알 수 있는 정보는 arr에 들어 있으므로
// false가 배열에 없으면 몇등인지 유추할 수 있는 부분 인 것이다.
answer = !hasFalse ? answer+1 : answer
}
return answer;
}
결국 노드(그래프)는 for문 3개를 돌리는 것을 통해 답을 구하는 것 같다.
저 3번째 for문 안에 내가 원하는 조건을 적고, arr에 적용 되도록 하는 것이 포인트 같다.
for문을 3번 돌리면서 연결 될 수 있는 부분은 다 채워진 것이다.
마지막으로 이를 통해 배열을 원하는 정보로 채운 후 다시 전체 배열을 대상으로 마지막 조건으로 최종 답을 도출하면 되는 것 같다.
반응형
'코딩테스트' 카테고리의 다른 글
[프로그래머스] level1. 신고 결과 받기 (javascript) (0) | 2022.01.17 |
---|---|
[프로그래머스] level1. 최소직사각형 (javascript) (2) | 2021.12.14 |
[프로그래머스] level3. 가장 먼 노드 (javascript) (0) | 2021.11.19 |
[프로그래머스] level3. 디스크 컨트롤러 (javascript) (0) | 2021.11.07 |
[프로그래머스] level1. 위클리 챌린지 2주차 (javascript) (0) | 2021.09.02 |