목차
- 좌표 정렬하기(1) 11650
- 좌표 정렬하기(2) 11651
- 국영수 10825
- 나이순 정렬 10814
- 시리얼 번호
1. 11650 좌표 정렬하기
N = int(input())
arr = []
for i in range(N):
a, b = map(int, input().split())
arr.append((a, b))
for a, b in sorted(arr):
print(a, b)
2. 11651 좌표 정렬하기(2)
- 정렬 기준을 두고 싶다면, key 값에 lambda를 넣고, 그 안에서 정렬을 원하는 순서대로 튜플을 넣어준다.
N = int(input())
arr = []
for i in range(N):
a, b = map(int, input().split())
arr.append((a, b))
for a, b in sorted(arr, key=lambda x: (x[1], x[0])):
print(a, b)
3. 10825 국영수
- 정렬에서 key 값의 lambda로 튜플 안에 음수인 값을 줌으로써 내림차순으로도 정렬이 가능하다.
N = int(input())
arr = []
for i in range(N):
a, b, c, d = input().split()
arr.append((a, int(b), int(c), int(d)))
for a in sorted(arr, key=lambda x: (-x[1], x[2], -x[3], x[0])):
print(a[0])
4. 10814 나이순 정렬
N = int(input())
arr = []
for i in range(N):
a, b = input().split()
arr.append((int(a), b))
for a, b in sorted(arr, key=lambda x: x[0]):
print(a, b)
5. 시리얼 번호
- 정렬 심화 문제다.
- 이 방법이 떠오르지 않아서 고민을 많이했다.
- 분명히 어렵게 가지 않는 방법이 있다는건 직관적으로 알겠는데, 생각하기가 싫은 딱 그런 느낌이었다.
- sort함수는 오름 차순이 기본이며, 안에 키값에 정렬 기준을 넣을 수 있단 걸 잊지말자.
import sys
def input(): return sys.stdin.readline().rstrip()
n = int(input())
srl = [input() for i in range(n)]
srl.sort() # 3번째 정렬
srl.sort(key=lambda x: sum(int(c) for c in x if c.isdigit())) # 2번째 정렬
srl.sort(key=lambda x: len(x)) # 첫 번째, 길이순으로 비교
for s in srl:
print(s)