๋ฌธ์ ์ค๋ช
๋ณต์ ์ ์๋ค์ ๋ชธ๋ฌด๊ฒ weights์, ๋ณต์ ์ ์๋ค์ ์ ์ ์ ๋ํ๋ด๋ head2head๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๋ณต์ ์ ์๋ค์ ๋ฒํธ๋ฅผ ๋ค์๊ณผ ๊ฐ์ ์์๋ก ์ ๋ ฌํ ํ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- ์ ์ฒด ์น๋ฅ ์ด ๋์ ๋ณต์์ ๋ฒํธ๊ฐ ์์ชฝ์ผ๋ก ๊ฐ๋๋ค. ์์ง ๋ค๋ฅธ ๋ณต์๋ ๋ถ์ด๋ณธ ์ ์ด ์๋ ๋ณต์์ ์น๋ฅ ์ 0%๋ก ์ทจ๊ธํฉ๋๋ค.
- ์น๋ฅ ์ด ๋์ผํ ๋ณต์์ ๋ฒํธ๋ค ์ค์์๋ ์์ ๋ณด๋ค ๋ชธ๋ฌด๊ฒ๊ฐ ๋ฌด๊ฑฐ์ด ๋ณต์๋ฅผ ์ด๊ธด ํ์๊ฐ ๋ง์ ๋ณต์์ ๋ฒํธ๊ฐ ์์ชฝ์ผ๋ก ๊ฐ๋๋ค.
- ์์ ๋ณด๋ค ๋ฌด๊ฑฐ์ด ๋ณต์๋ฅผ ์ด๊ธด ํ์๊น์ง ๋์ผํ ๋ณต์์ ๋ฒํธ๋ค ์ค์์๋ ์๊ธฐ ๋ชธ๋ฌด๊ฒ๊ฐ ๋ฌด๊ฑฐ์ด ๋ณต์์ ๋ฒํธ๊ฐ ์์ชฝ์ผ๋ก ๊ฐ๋๋ค.
- ์๊ธฐ ๋ชธ๋ฌด๊ฒ๊น์ง ๋์ผํ ๋ณต์์ ๋ฒํธ๋ค ์ค์์๋ ์์ ๋ฒํธ๊ฐ ์์ชฝ์ผ๋ก ๊ฐ๋๋ค.
์ ํ์ฌํญ
- weights์ ๊ธธ์ด๋ 2 ์ด์ 1,000 ์ดํ์
๋๋ค.
- weights์ ๋ชจ๋ ๊ฐ์ 45 ์ด์ 150 ์ดํ์ ์ ์์ ๋๋ค.
- weights[i] ๋ i+1๋ฒ ๋ณต์์ ๋ชธ๋ฌด๊ฒ(kg)๋ฅผ ์๋ฏธํฉ๋๋ค.
- head2head์ ๊ธธ์ด๋ weights์ ๊ธธ์ด์ ๊ฐ์ต๋๋ค.
- head2head์ ๋ชจ๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ weights์ ๊ธธ์ด์ ๋์ผํ๋ฉฐ, 'N', 'W', 'L'๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์ ๋๋ค.
- head2head[i] ๋ i+1๋ฒ ๋ณต์์ ์ ์ ์ ์๋ฏธํ๋ฉฐ, head2head[i][j]๋ i+1๋ฒ ๋ณต์์ j+1๋ฒ ๋ณต์์ ๋งค์น ๊ฒฐ๊ณผ๋ฅผ ์๋ฏธํฉ๋๋ค.
- 'N' (None)์ ๋ ๋ณต์๊ฐ ์์ง ๋ถ์ด๋ณธ ์ ์ด ์์์ ์๋ฏธํฉ๋๋ค.
- 'W' (Win)๋ i+1๋ฒ ๋ณต์๊ฐ j+1๋ฒ ๋ณต์๋ฅผ ์ด๊ฒผ์์ ์๋ฏธํฉ๋๋ค.
- 'L' (Lose)๋ i+1๋ฒ ๋ณต์ฌ๊ฐ j+1๋ฒ ๋ณต์์๊ฒ ์ก์์ ์๋ฏธํฉ๋๋ค.
- ์์์ i์ ๋ํด์ head2head[i][i] ๋ ํญ์ 'N'์ ๋๋ค. ์๊ธฐ ์์ ๊ณผ ์ธ์ธ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์์์ i, j์ ๋ํด์ head2head[i][j] = 'W' ์ด๋ฉด, head2head[j][i] = 'L'์ ๋๋ค.
- ์์์ i, j์ ๋ํด์ head2head[i][j] = 'L' ์ด๋ฉด, head2head[j][i] = 'W'์ ๋๋ค.
- ์์์ i, j์ ๋ํด์ head2head[i][j] = 'N' ์ด๋ฉด, head2head[j][i] = 'N'์ ๋๋ค.
์ ๋ต
def solution(weights, head2head):
# ์ ์๋ฒํธ : [์น๋ฆฌ ํ์(๋์ค์ ์น๋ฅ ๋ก ๋ฐ๋), ๋ฌด๊ฑฐ์ด ์ฌ๋ ์น๋ฆฌ ํ์, ์๊ธฐ ๋ชธ๋ฌด๊ฒ]
player = { i+1:[0.0, 0, weights[i]] for i in range(len(weights)) }
for idx, score in enumerate(head2head):
cnt = 0
for i, s in enumerate(score):
if s != "N": cnt += 1 # ๋๊ฒฐ ํ์ -1
if s == "W":
player[idx+1][0] += 1 # ์น๋ฆฌ ํ์ +1
if weights[idx] < weights[i]:
player[idx+1][1] += 1 # ๋ ๋ฌด๊ฑฐ์ด ์ฌ๋ ์น๋ฆฌ ํ์ +1
player[idx+1][0] = player[idx+1][0] / cnt * 100 if cnt != 0 else 0
player = sorted(player.items(), key=lambda x:(x[1], -x[0]), reverse=True)
answer = [i[0] for i in player]
return answer
๐ฅ (์น๋ฆฌ ํ์ / ๊ฒฝ๊ธฐ ํ์) != ์น๋ฅ
๐ฅ (์น๋ฆฌ ํ์ / (๊ฒฝ๊ธฐ ํ์ - ๋น๊ธด ํ์)) == ์น๋ฅ
๐ฅ ๋ชธ๋ฌด๊ฒ๊ฐ ๋ ๋ฌด๊ฑฐ์ด ๋ณต์๋ฅผ ์ธ์ผ์ง ๋ชธ๋ฌด๊ฒ๊ฐ ๊ฐ์ ๋ณต์๋ฅผ ํฌํจํ๋ฉด ์๋๋ค.
๐ฅ ์น๋ฅ ๊ตฌํ ๋ 0์ผ๋ก ๋๋๋ฉด ERROR
๐ฅ ๋๋ค์์์ ๊ธฐ์ค์ด ์ฌ๋ฌ๊ฐ์ผ ๋ ๊ดํธ๋ก ๋ฌถ์ด์ฃผ๊ธฐ
๐ฅ ์ค๋ฆ์ฐจ์๊ณผ ๋ด๋ฆผ์ฐจ์์ด ์์ฌ์๋ค๋ฉด -๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค.
728x90