[백준] 8979.올림픽

jeongjeong2·2023년 5월 3일
0

For coding test

목록 보기
41/59

문제 바로가기

문제 풀이

국가의 금, 은, 동에 대해 매달 순으로 list.sort(key = x lambda : x = l[0]) 이런 식으로 배열한 후에 rank를 출력하면 되는 간단한 문제
라고 생각했으나 배열을
country.sort(key = lambda x : (x[3],x[2],x[1]))
위와 같이 짜버려서 메달 순서에 따른 list 나열이 잘못되었다. 그러나 예시 코드의 답이 다 맞았어서 오류 찾느라 정말 시간 소모가 많이 걸렸다..

정답 코드

N, K = list(map(int,input().split()))
country = []
for i in range(N):
    medal = list(map(int,input().split()))
    country.append(medal)
country.sort(key = lambda x : (-x[1],-x[2],-x[3])) # 나열 방법 다시 확인
for i in range(N):
    if country[i][0] == K:
        index = i
for i in range(N):
    if country[index][1:] == country[i][1:]:
        print(i + 1)
        break

추가적인 개념 (optional)

country.sort(key = lambda x : (x[3],x[2],x[1])) 이처럼 어떤 list에 다양한 값을 갖는 원소가 있다면 특정 원소를 지정해서 sort할 수 있다. (key값을 이용해서) 이 때, 나열 순서도 정할 수 있다.

0개의 댓글