-
Notifications
You must be signed in to change notification settings - Fork 1
/
์์.py
31 lines (27 loc) ยท 1.79 KB
/
์์.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
'''
* ๐โโ๏ธ Created by wwlee94 on 2020.02.16
https://programmers.co.kr/learn/courses/30/lessons/49191
- ๋ฌธ์ ํ์ด ์ ๊ทผ -
([A, B]๋ A ์ ์๊ฐ B ์ ์๋ฅผ ์ด๊ฒผ๋ค๋ ์๋ฏธ == [B, A]๋ A ์ ์๊ฐ B ์ ์์๊ฒ ์ก๋ค๋ ์๋ฏธ) -> ๊ทธ๋ํ์์ ๊ฐ์ ์ด ์กด์ฌ ํ๋ค๋ ์๋ฏธ
๋ฐ๋ผ์ ์ด ๋ฌธ์ ์์ ์น์์ ํจ์๋ก ๋๋๋ค๋ฉด A->B๊ฐ 1(์น์)์ด๋ผ๋ฉด, B->A๋ -1(ํจ์)๋ผ๊ณ ์ธ์ ํ๋ ฌ์ ๋ง๋ค ์ ์๋ค.
์ฌ๊ธฐ์ ๋๋๋ ๊ฒ์ด ์๋๋ผ ๋ง์ฝ [A, B], [B, C]๋ผ๋ฉด A->C ๋ ์ฑ๋ฆฝ ํด์ผํ๊ธฐ ๋๋ฌธ์ 'B'๋ฅผ ๊ฑฐ์ณ์ ๊ฐ๋ ๊ฒฝ์ฐ๋ ๊ณ ๋ ค ํด์ฃผ์ด์ผํ๋ค. (ํ๋ก์ด๋)
๊ธฐ์กด์ ์ธ์ ํ๋ ฌ์์ ๊ฐ๊ฐ์ ๋
ธ๋๋ฅผ ๊ฑฐ์ณ๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ๋ชจ๋ ๊ฐฑ์ ํด์ฃผ๋ฉด ๋ !
Tip: ๋ฐฉํฅ์ด ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๊ณ ์งํํด์ผํ๋ค. -> ํน์ ์ ์ ์ ๊ฑฐ์ณ๊ฐ๋ค๋ฉด([i][k] -> [k][j]) ๊ฐ๊ฐ์ ๊ฐ์ด 1์ธ ์ํ์ด์ด์ผ ๊ฑฐ์ณ๊ฐ ์ ์๋ค๋ ๋ป ([i][k] + [k][j] == 2)
score[i][j] == 0 -> ์ด ๋ฌธ์ ๋ ์น์๊ฐ ํจ์๋ก ๋ฐ๋๋ ๊ฒฝ์ฐ๋ ์์ผ๋ 0์ธ ๋ถ๋ถ๋ง ์์ ์กฐ๊ฑด์ ํ์ธํด์ฃผ๋ฉด ๋ !
'''
def solution(n, results):
answer = 0
score = [[0 for _ in range(n)] for _ in range(n)]
for r in results:
score[r[0]-1][r[1]-1] = 1
score[r[1]-1][r[0]-1] = -1
# k: ๊ฑฐ์ณ๊ฐ๋ ๋
ธ๋
for k in range(n):
for i in range(n):
for j in range(n):
if i==j: score[i][j] = 9999
if score[i][j] == 0 and score[i][k] + score[k][j] == 2: # 1์ด ์ด๋ ํ ์ ์๋ ํ์
score[i][j] = 1 # i->j ์ด๊น
score[j][i] = -1 # j->i ์ง
answer = list(map(lambda x: True if 0 not in x else False, score)).count(True) # 0: ๋น ์ง ์ ๋ณด -> ๋น ์ง ์ ๋ณด๊ฐ ์๋๊ฑด False, ๋ชจ๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด True
return answer