내 코드)
from fractions import Fraction
def solution(N, stages):
answer = []
success = []
cnt = 0
for i in range(1, N + 1):
if i in stages:
a = stages.count(i)
b = len(stages) - cnt
cnt += a
success.append([i, float(Fraction(a, b))])
if i not in stages:
success.append([i, 0])
success.sort(key = lambda x : (-x[1], x[0])) #x[1]은 내림차순, 같은 값일 경우 x[0] 오름차순 정렬
for i in range(N):
answer.append(success[i][0])
return answer
*오늘의 배움!
ⓐ리스트.sort(key = lambda x : ( -x[1] , x[0]))
>> 앞에 -1을 붙이면 reverse=True 역순을 의미함. 즉, x[1]키를 기준으로 역순으로 정렬하고, x[1]이 같은 값일 경우 x[0]을 기준으로 정렬한다.
ⓑ리스트.sort(key = lambda x : -x[1])
>> 같은 값이 없거나 계산할 필요 없을 경우 이런식으로 조건 하나만 써줘도 됨.
ⓒsorted(리스트, key= len)
>> 이런식으로 sorted로 계산해줘도 된다.
반응형
'알고리즘 > 구현' 카테고리의 다른 글
특정 키를 기준으로 배열 오름차순 정렬하기(lambda) - python (0) | 2024.01.22 |
---|---|
파이썬 enumerate() 내장함수 사용 (0) | 2024.01.12 |
프로그래머스 - 대충 만든 자판(Python) (0) | 2024.01.08 |
시간 복잡도를 줄이기 위한 소수 구하기, 약수 구하기 (Python) (0) | 2023.12.31 |
백준 1417 국회의원 선거 (Python3) (1) | 2023.12.12 |