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) #내림차순
'코딩 테스트' 카테고리의 다른 글
[프로그래머스 코딩테스트] python 요격시스템 (0) | 2023.07.29 |
---|---|
[백준 1260번] DFS와 BFS 파이썬 (1) | 2023.04.15 |
[백준 1931번] 회의실 배정 파이썬 (0) | 2023.04.14 |
[백준 10989번] 수 정렬하기3 파이썬 python (0) | 2023.04.14 |
[백준 10828번] 스택 파이썬 (0) | 2023.04.13 |
댓글