๋ฌธ์ ๋งํฌ: programmers.co.kr/learn/courses/30/lessons/49191
๋ฌธ์ ์ค๋ช
4๋ฒ ์ ์๊ฐ 2๋ฒ ์ ์์๊ฒ ์ด๊ธฐ๊ณ 2๋ฒ ์ ์๊ฐ 5๋ฒ ์ ์์๊ฒ ์ด๊ธด๋ค๋ฉด, 4๋ฒ ์ ์๋ ๊ฒฐ๊ตญ 5๋ฒ ์ ์์๊ฒ๋ ์ด๊น๋๋ค.
4๋ฒ > 2๋ฒ, 2๋ฒ > 5๋ฒ → 4๋ฒ > 5๋ฒ
์ด๋ฐ ์์ผ๋ก ๋ชจ๋ ์ ์์ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉํด์ ๊ฒฐ๊ณผ์ ๊ฐ์๊ฐ (n - 1)๊ฐ๋ผ๋ฉด ์์๋ฅผ ํ์ ์ง์ ์ ์์ต๋๋ค.
- ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ win, lose ๋์ ๋๋ฆฌ ์ด๊ธฐํ
- results์ ์๋ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฅ (์ ์๊ฐ ๊ฒน์น์ง ์๊ฒ set ์๋ฃํ ์ด์ฉ)
- n๋ช
์ ์ ์๋ค์ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ํฉ์น๊ธฐ
1) ๋ง์ฝ A๊ฐ B๋ฅผ ์ด๊ฒผ๋ค๋ฉด A๋ B๊ฐ ์ด๊ธด ๋ชจ๋ ์ ์๋ค์๊ฒ ์น๋ฆฌ
2) ๋ง์ฝ A๊ฐ B์๊ฒ ์ก๋ค๋ฉด A๋ B๊ฐ ์ง ๋ชจ๋ ์ ์๋ค์๊ฒ ํจ๋ฐฐ - ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์ ๊ฐ์๊ฐ (n - 1)๊ฐ์ผ ๊ฒฝ์ฐ ์์๋ฅผ ์ ํ ์ ์์
์์ค์ฝ๋
from collections import defaultdict
def solution(n, results):
answer = 0
win, lose = defaultdict(set), defaultdict(set)
# ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ์
๋ ฅ ๋ฐ๊ธฐ
for (winner, loser) in results:
win[winner].add(loser)
lose[loser].add(winner)
# ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ ํฉ์น๊ธฐ
for i in range(1, n + 1):
for winner in lose[i]: win[winner].update(win[i])
for loser in win[i]: lose[loser].update(lose[i])
# ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๊ฐ (n - 1)๊ฐ๋ฉด ์์๋ฅผ ์ ํ ์ ์์
for i in range(1, n + 1):
if (len(win[i]) + len(lose[i])) == (n - 1): answer += 1
return answer
728x90
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ์ ์ ์ผ๊ฐํ (0) | 2021.04.06 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / Python] N์ผ๋ก ํํ (0) | 2021.04.06 |
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ๊ฐ์ฅ ๋จผ ๋ ธ๋ (0) | 2021.04.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ์ฌํ๊ฒฝ๋ก (0) | 2021.04.01 |
[ํ๋ก๊ทธ๋๋จธ์ค / Python] ๋จ์ด ๋ณํ (0) | 2021.03.31 |