[알고리즘]/BOJ

[백준/Python] 8979: 올림픽

개발새발주발 2023. 2. 25. 19:18
728x90

1. 문제 

 

8979번: 올림픽

입력의 첫 줄은 국가의 수 N(1 ≤ N ≤ 1,000)과 등수를 알고 싶은 국가 K(1 ≤ K ≤ N)가 빈칸을 사이에 두고 주어진다. 각 국가는 1부터 N 사이의 정수로 표현된다. 이후 N개의 각 줄에는 차례대로 각

www.acmicpc.net

2. 해결 

- 우선 얻은 금메달, 은메달, 동메달 수의 순서대로 리스트를 정렬한다. 

     - sort, lambda함수를 이용하여 정렬하였다. 

- 등수를 찾을 때 for 문을 돌며 n과 함께 주어진 국가번호 k의 index(정렬한 리스트의 등수 -1) 를 찾는다. 

- 등수가 중복되는 국가의 공동 등수를 지정하기 위해 for문을 돌며 k국가의 모든 메달 수 가 같은 국가가 나오면 그 국가의 (index+1)등이므로 출력해준다. 

3. 코드 

n, k = map(int,input().split())

table = [list(map(int,input().split())) for _ in range(n)]

table.sort(key = lambda x: (-x[1], -x[2], -x[3]))

for i in range(n):
    if table[i][0] == k:
        # 국가번호
        idx = i
for j in range(n):
    # 중복 체크
    if table[idx][1:] == table[j][1:] :
        print(j+1)
        break