๐ฅ๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/49191
๐ฅํ๊ธฐ
ํ์ฐธ ๊ณ ๋ฏผํ๋ค ํ์ง๋ฅผ ๋ชปํด ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ์ฐธ๊ณ ํ ๋ค ๋ฌธ์ ๋ฅผ ํ์๋ค.
๋ค๋ฅธ์ฌ๋๋ค์ ํ์ด๋ฒ์ ์ฐธ๊ณ ํ๋ค ํ๋ก์ด๋ ์์ฌ ์ด๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฒ ๋์๊ณ ๋ด๊ฐ ํผ ๋ฌธ์ ์ ๋ฐฉ์์ ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ ํ์ด๋ผ๋ ์ ์ ์ธ๊ธํ๋ค. ์์ธํ ํ์ด๋ฒ์ ํ๋จ ์ฃผ์์ ์ฐธ๊ณ ํ์
function solution(n, results) {
let answer = 0;
// n์ 1๋ถํฐ ์ด๋ฏ๋ก ์ผ๋ถ๋ฌ index 0์ ์ ๊ฒฝ์์ฐ๊ธฐ ์ํด n+1 ๊ธธ์ด์ ๋ฐฐ์ด ์์ฑ
let graph = Array.from({length:n+1},()=>Array(n+1).fill(false))
// ์นํจ ํ๋ณ ๊ฐ๋ฅ check
for([win,lose] of results){
graph[win][lose]=true
}
// [1,5], [5,6] ์ ๊ฐ์ ๊ฒฝ์ฐ -> ํ๋จ ๊ณผ์ ์์ [1,6]์์ ์ ์ ์์
for(let i=1; i<=n; ++i){
for(let j=1; j<=n; ++j){
if(graph[i][j]||graph[j][i]){
}else{
for(let k=1; k<=n; ++k){
if(graph[i][k] && graph[k][j]){
graph[i][j]=true
break;
}else if(graph[j][k] && graph[k][i]){
graph[j][i]=true
break;
}
}
}
}
}
// ์ด n ๋ช
์ ์ ์๊ฐ ์์ ๋ 1๋ฒ ์ ์๋ n-1๋ช
์ ์ ์์์ ์ธ์ ์์ธก์ด ๊ฐ๋ฅํ๋ฉด ๊ทธ ์ ์๋ ์ ํํ
// ์์๋ฅผ ์ ์ ์์
for(let i=1; i<=n; ++i){
let count = 0 ;
for(let j=1; j<=n; ++j){
if(graph[i][j]||graph[j][i]){
++count
}
}
if(count ===n-1){
++answer
}
}
return answer;
}
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ์ด๋ชจํฐ์ฝ ํ ์ธํ์ฌ (0) | 2024.08.24 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋จ์ด๋ณํ (0) | 2024.08.24 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋ฌด์ธ๋ ์ฌํ (0) | 2024.08.11 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ์์ ์ต๋ํ (0) | 2024.08.10 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > [3์ฐจ] n์ง์ ๊ฒ์ (0) | 2024.08.05 |