백준 / 실버 5 / 11651 좌표 정렬하기 2 / Python [정렬]

jjin·2023년 10월 10일
0

python 못보게 한 곳 대비하다가,, 오랜만에 써본다

Python docs 함수 정의 문법

  • '/'
    '/' 이전의 매개변수는 위치 인자로, 이후의 매개변수는 키워드 인자로 전달되어야 한다.
  • '*'
    '*' 이후의 매개변수는 키워드 인자로 전달되어야 한다.
  • 위치 인자
    매개변수명을 명시하지 않고 위치로 매핑된다.
  • 키워드 인자
    위치 상관없이 = 기호 앞 매개변수명으로 매핑된다.

sort 내장형 vs 내장 함수 sorted

공통점

  • 병합정렬, 삽입정렬을 혼합한 Timsort
  • 최선 평균 최악 O(NlogN)
  • 순서(안정성) 보장되어 다중 정렬에 유용 (예: 부서로 정렬 후 급여로 정렬)
  • < 비교만을 사용
  • 둘의 성능 차이는 무시할 수준이다.
  • key는 하나의 인자를 받는 함수를 지정하는데, list나 iterable의 각 요소들로부터 비교 키를 추출하는 데 사용된다.

sort(*, key=None, reverse=False)

  • list 내장형 클래스의 함수로, 다른 iterable에 사용 불가
  • 객체 내 제자리 정렬
    큰 시퀀스를 정렬할 때 공간 절약됨
  • 예외 억제되지 않음
    비교 연산 실패 시 리스트는 부분적으로 수정된 상태로 남음.

sorted(iterable, /, *, key=None, reverse=False)

  • 내장 함수로, 모든 iterable에 사용 가능

key

key=None  # ABCabc

key=str.lower  # 대소구분없이 정렬
key=lambda x: x.lower()  # 상동

key=lambda x: (x.lower(), x)  # AaBbCc
key=lambda x: (x.lower(), x.swapcase())  # aAbBcC

str.lower

모든 문자가 소문자로 변환된 복사본을 반환

lambda

is_even = lambda x: x % 2 == 0

1. key

l.sort(key=lambda x: x[1], reverse=True)

2. map

l = list(map(lambda x: x+2, [1, 2, 3]))

print(l) // [3, 4, 5]

3. filter

l = list(filter(is_even, range(10)))
l = list(filter(lambda x: x % 2 == 0, range(10)))

print(l) // [0, 2, 4, 6, 8]

풀이: 기본

import sys;
input = sys.stdin.readline

N = int(input())
P = [list(map(int, input().split())) for _ in range(N)]

P.sort(key=(lambda x : (x[1], x[0])))

for p in P:
    print(p[0], p[1])
profile
진짜

0개의 댓글