09009

[백준 8979번] 올림픽 본문

Algorithm
[백준 8979번] 올림픽
09009 2023. 9. 16.

문제 보기

https://www.acmicpc.net/problem/8979

 

8979번: 올림픽

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

www.acmicpc.net

 

문제 해결

정렬을 이용하여 해결하는 문제이다. lambda를 이용하여 sort 하는 방법 참고하기

 

 

직접 해결한 풀이

import sys
input = sys.stdin.readline

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

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

arr = sorted(arr, key=lambda x:(-x[1], -x[2], -x[3])) 

cnt, remain_cnt = 0, 0
for i in range(n):
    cnt += 1
    if i >= 1:
        if arr[i][1:] == arr[i-1][1:]:
            remain_cnt += 1
        elif arr[i][1:] != arr[i-1][1:]: 
            remain_cnt = 0        
    if arr[i][0] == k:
        print(cnt - remain_cnt)

 

 

소스 코드

import sys
input = sys.stdin.readline

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

def solution(n, k, countries):
    countries.sort(key=lambda x:(x[1], x[2], x[3]), reverse=True)
    
    for i in range(n):
        if countries[i][0] == k:
            idx = i

    for i in range(n):
        if countries[idx][1:] == countries[i][1:]:
            return i+1

print(solution(n,k,countries))