본문 바로가기
코딩 테스트

[구름] 밀도 정렬 파이썬

by 얀나대장 2023. 4. 14.

https://level.goorm.io/exam/174784/%EB%B0%80%EB%8F%84-%EC%A0%95%EB%A0%AC/quiz/1

 

구름LEVEL

구름LEVEL 문제를 풀이하고 부족한 부분을 보완하며 실력을 키워보세요. 구름LEVEL은 코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입

level.goorm.io

* 구름은 문제 복사 붙여넣기가 안되네요 ㅜㅜ, 링크에서 확인 해주세요.

 

해결법

lambda를 사용해 우선순위대로 정렬하자.

index가 사라지는건 index 요소를 추가하거나 sort전에 array[::]로 복사해서 sort한 후 index를 찾자

 

#가장 밀도 높은 물질 index
# w/v, w가 더 큰대로 정렬
# 가장 작은 밀도 = 0.0001
import sys; input=sys.stdin.readline

n = int(input())

obj = []
m = [0]*(n+1)

for i in range(1,n+1):
	w,v = map(int, input().split())
	obj.append([i,w,v, w/v])

# 밀도가 가장 높은 물질의 idx
# 밀도가 같으면 더 무거운 물질, 밀도와 w가 같으면 가장 앞쪽 번호

obj = sorted(obj, key = lambda x:(x[3], x[1]), reverse=True)

print(obj[0][0])

 

배운점

lambda 우선순위대로 출력하려면 튜플로 받아오면 된다!.

 

복습

sorted(a, key=x:(x[0],x[1]), reverse=True) #내림차순

 

댓글