이숭간 공부기록

백준 11650번 파이썬 _ 좌표 정렬 (실버5) 본문

알고리즘/백준

백준 11650번 파이썬 _ 좌표 정렬 (실버5)

이숭간 2021. 3. 13. 18:59
728x90

www.acmicpc.net/problem/11650

 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

문제유형 : 정렬

 

문제풀이 : sort/sorted함수에서 lamda를 이용해서 정렬조건key로 넘겨주기!!!

 

<< 파이썬 정렬 lamda 정리 >>

list = [[0,1], [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]] 처럼 2차원배열이거나, list안의 원소가 튜플같은 경우의 정렬조건

 

key = lamda x : x[0] // 내부원소중 첫번째 값을 기준으로 정렬

key = lamda x : x[1] // 내부원소중 두번째 값을 기준으로 정렬

key = lamda x : (x[0], x[1]) // 첫번째 값 ->  두번째 값을 기준으로 정렬 (오름차순)

key = lamda x : (x[0], -x[1]) // -를 붙이면 현재정렬차순과 반대로 정렬함 (내림차순)

 

정답코드 :

import sys
input = sys.stdin.readline

n = int(input())
input_list = []

for i in range(n):
    list_xy = list(map(int, input().split()))
    input_list.append(list_xy)

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

for i in input_list:
    for k in i:
        print(k, end=' ')
    print()