๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜/์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œํ’€์ด

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค-49191] ์ˆœ์œ„

by alswlfl 2026. 5. 17.

[๊ทธ๋ž˜ํ”„-์ˆœ์œ„]

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 

๋ฌธ์ œ

1๋ฒˆ ~ n๋ฒˆ๊นŒ์ง€ n๋ช…์˜ ๊ถŒํˆฌ์„ ์ˆ˜๊ฐ€ ๊ถŒํˆฌ ๋Œ€ํšŒ ์ฐธ์—ฌํ•จ. ๊ถŒํˆฌ ๊ฒฝ๊ธฐ๋Š” 1:1 ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰,

A ์„ ์ˆ˜ ์‹ค๋ ฅ > B ์„ ์ˆ˜ ์‹ค๋ ฅ → A ์„ ์ˆ˜๋Š” ํ•ญ์ƒ B ์„ ์ˆ˜ ์ด๊น€

๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ๊ฐ€์ง€๊ณ  ์ˆœ์œ„ ๋งค๊ธฐ๋ คํ•  ๋•Œ, ๋ถ„์‹ค๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •ํ™•ํ•˜๊ฒŒ ์ˆœ์œ„๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ๋Š” ์„ ์ˆ˜์˜ ์ˆ˜ ๊ตฌํ•˜๊ธฐ

์ œํ•œ์‚ฌํ•ญ

  • 1 โ‰ฆ ์„ ์ˆ˜์˜ ์ˆ˜ n โ‰ฆ 100
  • 1 โ‰ฆ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ โ‰ฆ 4500
  • results[A, B] → A ์„ ์ˆ˜๊ฐ€ B ์„ ์ˆ˜ ์ด๊น€
  • ๋ชจ๋“  ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋Š” ๋ชจ์ˆœ X

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

n results return
5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2

 

2๋ฒˆ ์„ ์ˆ˜๋Š” [1, 3, 4] ์„ ์ˆ˜์—๊ฒŒ ํŒจ๋ฐฐํ–ˆ๊ณ , 5๋ฒˆ ์„ ์ˆ˜์—๊ฒŒ ์Šน๋ฆฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 4์œ„

5๋ฒˆ ์„ ์ˆ˜๋Š” 4์œ„์ธ 2๋ฒˆ ์„ ์ˆ˜์—๊ฒŒ ํŒจ๋ฐฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— 5์œ„

์ ‘๊ทผ ๋ฐฉ๋ฒ•

์ฒ˜์Œ์— ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ณ„์‚ฐํ•˜๋Š” ๋กœ์ง์„ ์ž˜๋ชปํ•ด์„œ ๊ณ„์† ์‹คํŒจํ•จใ… ใ… 

ํ”Œ๋กœ์ด๋“œ-์›Œ์…œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉํ•ด์„œ A > B์ด๊ณ  B > C์ด๋ฉด ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์œผ๋กœ ์ ‘๊ทผ

 

  1. ์ฃผ์–ด์ง„ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ(results)๋กœ ์ด๊ธด ๊ฒฝ๊ธฐ๋Š” 1๋กœ, ์ง„ ๊ฒฝ๊ธฐ๋Š” -1๋กœ ํ‘œ์‹œ
  2. DP[i][k] = 1 && DP[k][j] = 1 ์ธ ๊ฒฝ์šฐ์—๋งŒ, DP[i][j] =1, DP[j][i] = -1๋กœ ํ‘œ์‹œ
  3. ์ž๊ธฐ์ž์‹  ์ œ์™ธํ•˜๊ณ  0์˜ ํšŸ์ˆ˜๊ฐ€ 0์ธ ๊ฒฝ์šฐ์—๋งŒ ์ •ํ™•ํ•˜๊ฒŒ ์ˆœ์œ„ ๋งค๊ธธ ์ˆ˜ ์žˆ์Œ

1) ์ดˆ๊ธฐ ์ƒํƒœ

  1 2 3 4 5
1 0 1 0 0 0
2 -1 0 -1 -1 1
3 0 1 0 -1 0
4 0 1 1 0 0
5 0 -1 0 0 0

 

2) k=1

  1 2 3 4 5
1 0 1 0 0 0
2 -1 0 -1 -1 1
3 0 1 0 -1 0
4 0 1 1 0 0
5 0 -1 0 0 0

 

3) k=2

  1 2 3 4 5
1 0 1 0 0 1
2 -1 0 -1 -1 1
3 0 1 0 -1 1
4 0 1 1 0 1
5 -1 -1 -1 -1 0

 

4) k=3, k=4, k=5 ๋™์ผ

5) ์ตœ์ข…

  1 2 3 4 5
1 0 1 0 0 1
2 -1 0 -1 -1 1
3 0 1 0 -1 1
4 0 1 1 0 1
5 -1 -1 -1 -1 0

 

6) 0์ด ์•„๋‹Œ ๊ฐฏ์ˆ˜ ์นด์šดํŠธ

  1 2 3 4 5 0์˜ ๊ฐœ์ˆ˜(๋ณธ์ธ ์ œ์™ธ)
1 0 1 0 0 1 2
2 -1 0 -1 -1 1 0
3 0 1 0 -1 1 1
4 0 1 1 0 1 1
5 -1 -1 -1 -1 0 0

 

์ฝ”๋“œ

function solution(n, results) {
    let answer = 0;
    
    const dp = Array.from({length: n+1}, () => Array.from({length: n+1}, () => 0));
    for(const [a, b] of results) {
        dp[a][b] = 1;
        dp[b][a] = -1;
    }
    
    for(let k=1; k<=n; k++) {
        for(let i=1; i<=n; i++) {
            for(let j=1; j<=n; j++) {
                if(dp[i][k] === 1 && dp[k][j] === 1) {
                    dp[i][j] = 1;
                    dp[j][i] = -1;
                }
            }
        }
    }
    
    for(let i=1; i<=n; i++) {
        let cnt = 0; // 0์˜ ๊ฐœ์ˆ˜
        for(let j =1; j<=n; j++) {
            if(i!==j && dp[i][j] === 0) {
                cnt++;
            }
        }
        if(cnt === 0) answer++;
    }
    
    return answer;
}