8/17 sort
-
sort(), sorted()
-
2차원 배열 정렬
https://www.acmicpc.net/problem/11651
좌표를 정렬하는데, y값 오름차순으로 정렬, y값이 같으면 x값 오름차순으로 정렬하는 문제이다..
# coord는 x, y좌표를 저장한 리스트 coord.sort(key = lambda x : (x[1], x[0]))
정렬기준 key에서 lambda를 이용해 정렬한다.
lambda x : (x[1], x[0])은 x[1], 즉 y값을 기준으로 정렬한 뒤 x[0], 즉 x값으로 정렬한다.
coord.sort(key = lambda x : (-x[1], x[0]))
마이너스를 하게되면 내림차순 정렬이 되겠다.
-
문자열 정렬
https://www.acmicpc.net/problem/1181
문자열을 길이가 짧은것부터 길이가 같으면 사전 순으로 정렬하는 문제이다.
# words는 단어들이 저장돼있는 배열이다. words.sort()
괄호안에 아무 argument도 주지 않고 적용하면 문자열의 경우 사전순으로 정렬된다.
words.sort(key = len)
문자그대로 len, 즉 길이순으로 정렬한다.
N = int(input()) words = [] for _ in range(N) : words.append(input()) words = list(set(words)) words.sort() words.sort(key = len) for word in words : print(word)
문제에 대한 전체 코드인데, 한가지 의문점이 for문 이후 sort()가 적용된 두줄의 코드에서 먼저 사전순으로 정렬한 뒤 길이순으로 정렬하면 이전에 사전순으로 정렬된 배열이 섞이게 되는게 아닌가 궁금했는데 찾아보니 파이썬은 stable한 TimSort 알고리즘을 채택하기 때문에 그렇다고 한다. 이에 대한 내용은 찾아보니 양이 꽤 되는것 같아 추후에 포스팅해야겠다.
-
댓글남기기