[백준] 10814번 : 나이순정렬

letsbebrave·2022년 3월 10일
0

codingtest

목록 보기
43/146

문제

람다식으로 정렬

특정 인덱스의 원소로 배열 정렬하는 법
https://dydwnsekd.tistory.com/73

람다 다중 조건으로 한 번에 정렬하게
https://dailyheumsi.tistory.com/67

a = [(1, 2), (0, 1), (5, 1), (5, 2), (3, 0)]

# 인자없이 그냥 sorted()만 쓰면, 리스트 아이템의 각 요소 순서대로 정렬을 한다.
b = sorted(a)
# b = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]

# key 인자에 함수를 넘겨주면 해당 함수의 반환값을 비교하여 순서대로 정렬한다.
c = sorted(a, key = lambda x : x[0])
# c = [(0, 1), (1, 2), (3, 0), (5, 1), (5, 2)]
d = sorted(a, key = lambda x : x[1])
# d = [(3, 0), (0, 1), (5, 1), (1, 2), (5, 2)]

# 아이템 첫 번째 인자를 기준으로 오름차순으로 먼저 정렬하고,
# 그리고 그 안에서 다음 두 번째 인자를 기준으로 내림차순으로 정렬하게 하려면, 다음과 같이 할 수 있다.
e = [(1, 3), (0, 3), (1, 4), (1, 5), (0, 1), (2, 4)]
f = sorted(e, key = lambda x : (x[0], -x[1]))
# f = [(0, 3), (0, 1), (1, 5), (1, 4), (1, 3), (2, 4)]

풀이

import sys
T = int(sys.stdin.readline())
arr = []

for i in range(T):
    data = sys.stdin.readline().strip() # strip()을 가지고 문자열 맨 앞과 맨 끝의 공백문자를 제거
    A, B = data.split()
    arr.append([i+1, int(A), B])

b = sorted(arr, key = lambda x:(x[1], x[0]))

for i in range(len(b)):
    print(b[i][1], b[i][2])

Ref.

https://dailyheumsi.tistory.com/67

profile
그게, 할 수 있다고 믿어야 해

0개의 댓글