๋ฌธ์ ์ค๋ช
์์
n๋ช ์ ๊ถํฌ์ ์๊ฐ ๊ถํฌ ๋ํ์ ์ฐธ์ฌํ๊ณ ๊ฐ๊ฐ 1๋ฒ๋ถํฐ n๋ฒ๊น์ง ๋ฒํธ๋ฅผ ๋ฐ์์ต๋๋ค. ๊ถํฌ ๊ฒฝ๊ธฐ๋ 1๋1 ๋ฐฉ์์ผ๋ก ์งํ์ด ๋๊ณ , ๋ง์ฝ A ์ ์๊ฐ B ์ ์๋ณด๋ค ์ค๋ ฅ์ด ์ข๋ค๋ฉด A ์ ์๋ B ์ ์๋ฅผ ํญ์ ์ด๊น๋๋ค. ์ฌํ์ ์ฃผ์ด์ง ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ ์ ์๋ค์ ์์๋ฅผ ๋งค๊ธฐ๋ ค ํฉ๋๋ค. ํ์ง๋ง ๋ช๋ช ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ถ์คํ์ฌ ์ ํํ๊ฒ ์์๋ฅผ ๋งค๊ธธ ์ ์์ต๋๋ค.
์ ์์ ์ n, ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ฅผ ๋ด์ 2์ฐจ์ ๋ฐฐ์ด results๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋ ์ ํํ๊ฒ ์์๋ฅผ ๋งค๊ธธ ์ ์๋ ์ ์์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
- ์ ์์ ์๋ 1๋ช ์ด์ 100๋ช ์ดํ์ ๋๋ค.
- ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ๋ 1๊ฐ ์ด์ 4,500๊ฐ ์ดํ์ ๋๋ค.
- results ๋ฐฐ์ด ๊ฐ ํ [A, B]๋ A ์ ์๊ฐ B ์ ์๋ฅผ ์ด๊ฒผ๋ค๋ ์๋ฏธ์ ๋๋ค.
- ๋ชจ๋ ๊ฒฝ๊ธฐ ๊ฒฐ๊ณผ์๋ ๋ชจ์์ด ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
nresultsreturn
5 | [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] | 2 |
์ ์ถ๋ ฅ ์ ์ค๋ช
2๋ฒ ์ ์๋ [1, 3, 4] ์ ์์๊ฒ ํจ๋ฐฐํ๊ณ 5๋ฒ ์ ์์๊ฒ ์น๋ฆฌํ๊ธฐ ๋๋ฌธ์ 4์์
๋๋ค.
5๋ฒ ์ ์๋ 4์์ธ 2๋ฒ ์ ์์๊ฒ ํจ๋ฐฐํ๊ธฐ ๋๋ฌธ์ 5์์
๋๋ค.
ํ์ด
set()์ผ๋ก ํธ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
์์ ๋ณด๋ค ์์ ์๋ ์ฌ๋์ ์ + ์์ ๋ณด๋ค ๋ฐ์ ์๋ ์ฌ๋์ ์ == n - 1 ์ธ ๊ฒฝ์ฐ ๋ฑ์๋ฅผ ๊ตฌํ ์ ์๋๋ฐ
์์ ๋ณด๋ค ์์ ์๋ ์ฌ๋์ ์๋ฅผ ์๊ธฐ ์ํด์ , ์์ ๋ณด๋ค ์์ ์๋ ์ฌ๋์ ์์ ์๋ ์ฌ๋์ ์ถ๊ฐ(์
๋ฐ์ดํธ)ํด์ค์ผ ํ๋ค.
๋ง์ด ์ด๋ ค์ด๋ฐ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ฝ๋ค.
ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํธ๋ ๋ฐฉ๋ฒ์ด ์๋๋ฐ ๊ฐ์ธ์ ์ผ๋ก๋ ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๊ฐ์ง๋ ์์ ์ค๋ช
ํ์ง ์๊ฒ ๋ค.
def solution(n, results):
answer = 0
lower = [set() for _ in range(n+1)]
upper = [set() for _ in range(n+1)]
for [winner, loser] in results:
upper[loser].add(winner)
lower[winner].add(loser)
for i in range(1, n+1):
for low in lower[i]:
upper[low].update(upper[i])
for up in upper[i]:
lower[up].update(lower[i])
for i in range(1, n+1):
if len(upper[i]) + len(lower[i]) == n - 1:
answer += 1
return answer
'Problem Solving ๐ฅ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ๋ฅ๊ณผ ๋ณด ์ค์น / ํ์ด์ฌ / (์งํฉ) (0) | 2021.01.23 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ๋จผ ๋ ธ๋ / ํ์ด์ฌ (0) | 2021.01.19 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ถ์ ํธ๋ํฝ / ํ์ด์ฌ (0) | 2021.01.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ์ ํฐ๋จ๋ฆฌ๊ธฐ / ํ์ด์ฌ / (์ต์, ์ต๋, ํ) (2) | 2021.01.18 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ์ผ๋ช ์ ๋ ฌ / ํ์ด์ฌ (0) | 2021.01.17 |