Coding Test/정렬

[TIL] 정렬(백준 8979 파이썬) 2022.01.20

HUR129 2022. 1. 20. 23:59
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
s = []
for i in range(n):
    s.append(list(map(int, input().split())))

s.sort(key=lambda x : (-x[1], -x[2], -x[3])) # 왼쪽>>오른쪽 기준으로 정렬
for i in range(n):
	if s[i][0] == k: # k는 sorted table에서 어디입니까?
    	idx==i
for i in range(n):
	if s[i][1:]==s[idx][1:]: #예외케이스 > (3,0,0) (2,0,0) (2,0,0) (2,0,0) 여기서 (2,0,0)의 3번째라면 2위가 아니고 4위가 되어버림. 값반영을 못함. 이것처리
    	print(i+1)

예외처리가 중요했던 문제이다. 메달수가 같은데 공동n 등으로 처리해야할 문제가 그냥 sorted table에서 가져오면 공동등수가 아니라 for 문 돌면서 밀려나버린다. 따라서 값을 save반영하기 위한것이 아래쪽 코드