[프로그래머스] 순위 (javascript, 플로이드와샬, level3)
728x90
반응형
이런 서로 간의 순위를 알아내는 문제를 만나면 못 풀었었는데 플로이드 와샬 알고리즘이라고 한다. (음... 잊었군)
중간 노드 개념이 어려웠었는데 이렇게 a가 mid를 이기고 mid가 b를 이기면 a가 b를 이김 이런식으로 보니까 이해했다.
백준 순위 문제와 같다니까 그거는 자바로 풀어봐야겠다.
function solution(n, results) {
var answer = 0;
// 1부터 시작 주의
const graph=Array.from({length:n+1},()=>Array(n+1).fill(false));
results.map((item)=>{
const [win,lose]=item;
graph[win][lose]=1; //이긴 경우 1
graph[lose][win]=-1; //졌을 경우 -1
graph[win][win]=0;//자기자신
graph[lose][lose]=0;
})
const range=[...Array(n).keys()].map(e=>e+1);
for(const mid of range){
for(const a of range){
for(const b of range){
if(graph[a][mid]==1 && graph[mid][b]==1 ){ //a가 mid이기고 mid가 b이김
graph[a][b]=1;
}else if(graph[a][mid]==-1 && graph[mid][b]==-1){//a가 mid한테 지고 mid가 b한테 지면
graph[a][b]=-1;
}
}
}
for(const a of range){
let possible=true;
for(const b of range){
if(graph[a][b]===false){
possible=false;
break;
}
}
if(possible){
answer+=1;
}
}
return answer;
}
728x90
반응형
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 단속 카메라 (javascript) (0) | 2021.03.19 |
---|---|
[프로그래머스] 폰켓몬 (javascript) (0) | 2021.03.18 |
[프로그래머스] 이중 우선순위 큐 (javascript) (0) | 2021.03.11 |
[프로그래머스] 디스크 컨트롤러 (javascript, 우선순위큐, 그리디) (0) | 2021.03.11 |
[프로그래머스] 섬 연결하기 (javascript) (0) | 2021.03.11 |
TAGS.