정렬하기

1. 정렬이란
정해진 규칙대로 수가 나열되는 것이다.
2. 정렬을 위한 함수
- sort()
list를 정의했다면 list.sort()를 사용해 오름차순 정렬
- sort(reverse = True)
list를 정의했다면 list.sort(reverse = True)를 사용해 내림차순 정렬
-key
sort()에 변수 key를 주어, key에 저장된 결과에 따라서 정렬한다.
ex) key가 의미하는 것이 문자열의 길이라면 list.sort(key = len)으로 사용하고 list 원소의 첫번째부터 len을 파악하여 값에 맞춰서 정렬한다.
3. list1의 값을 그대로 유지하며 저장하고 싶다면?
- list1에 sort()를 사용하게 되면 list1이 sort됨
- list2에 list1의 sorted된 값만 저장하면 됨
=> how?
list2 = sorted(list1) 이후 list2는 list1이 정렬된 값의 리스트가 됨
% reverse도 원래 값을 유지하고 싶다면 다른 list에 reversed를 사용해 저장가능
4. 연습하기
sort사용
2750번: 수 정렬하기
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
lambda와 key의 사용
11651번: 좌표 정렬하기 2
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
n = int(input())
list = []
m=2
for i in range(0,n):
list2 =[0]*m
list2[0],list2[1] = map(int,input().split())
list.append(list2)
list = sorted(list, key = lambda a : a[0])
list = sorted(list, key = lambda a: a[1])
for i in range(0,n):
for j in range(0,m):
print("%d" %list[i][j], end=' ')
print( )