티스토리 뷰

파이썬/파이썬 기초

정렬하기

백수진 2021. 3. 22. 18:25

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사용

www.acmicpc.net/problem/2750

 

2750번: 수 정렬하기

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

 

lambda와 key의 사용

 

www.acmicpc.net/problem/11651

 

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( )