[백준]11650번 & 11651번 좌표 정렬하기 1, 2 - 정렬
SW개발/코딩테스트

[백준]11650번 & 11651번 좌표 정렬하기 1, 2 - 정렬

11650번 문제 설명

 

n = int(input())
a = [[0] * 2 for i in range(n)]
for i in range(n):
    a[i][0], a[i][1] = map(int,input().split())
a.sort(key=lambda x: (x[0], x[1]))
for i in range(len(a)):
    print(a[i][0], a[i][1])

 

코드 설명

이중 리스트를 점의 개수만큼 초기화 하고 하나의 리스트 당 2개의 원소를 갖도록 초기화 한다. 반복문을 통하여 리스트에 값을 넣어준다.

sort() 함수의 key 값으로 lambda 를 이용하여 리스트의 0번째 인덱스를 기준으로 정렬한 후, 그 다음 정렬은 1번째 인덱스를 기준으로 정렬한다.

 

Point : sort() 함수를 이용시 정렬 기준을 2개로 설정하여, x좌표가 같을 시 y좌표가 증가하는 순으로 정렬하여야 한다.

 

11651번 문제 설명

 

import sys
n = int(sys.stdin.readline())
a = [[0] * 2 for i in range(n)]
for i in range(n):
    a[i][0], a[i][1] = map(int,sys.stdin.readline().split())
a.sort(key=lambda x: (x[1], x[0]))
for i in range(len(a)):
    print(a[i][0], a[i][1])

 

코드 설명

기본적으로는 11650 문제와 동일하다. 정렬 기준 인덱스를 1을 우선으로 하고 그 다음을 0으로 설정하였다.

 

Point : 정렬 기준을 1 인덱스를 우선, 그 다음 0 인덱스를 기준으로 잡는다.

 

728x90