[백준 Python] 11651번 좌표 정렬하기 2 파이썬

728x90
반응형

단계별로 풀어보기 - [정렬] - 11651번 좌표 정렬하기 2

문제


문제링크

 

 

풀이


1. 입력값 받기

좌표 입력값 받기:

n번 동안 공백으로 분리되어 들어오는 입력값을 2개씩 잘라서 튜플 형태로 pos리스트에 넣는다.

(공백으로 나누어진 2개의 정수 튜플 n쌍 생성)

pos = [tuple(int(m) for m in input().split()[:2]) for _ in range(n)]

 

2. 정렬하기

11650번에서는 단순히 sort()함수를 쓰면 디폴트로 x좌표를 기준으로 정렬이 됐지만,

이번 문제에서는 y좌표를 기준으로 정렬하기 위해 parameter를 추가로 설정해줘야 한다.

 

[2차원 배열에서 내부 배열의 특정 값을 기준으로 정렬하는 방법]


1) 특정 값 (i번째 원소)을 기준으로 오름차순 정렬한다.

.sort(key = lambda x: (x[i]))

 

2) 만약 i번째 인덱스의 값이 같을 경우, 뒤에 있는 j번째 인덱스를 기준으로 정렬한다.

.sort(key = lambda x: (x[i], x[j]))

3) 괄호 안의 x에 -를 붙이면 내림차순으로 정렬된다.

.sort(key = lambda x: (-x[i]))

 

 

CODE

n = int(input())

pos = [tuple(int(m) for m in input().split()[:2]) for _ in range(n)]

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

for i in pos:
    print(i[0], i[1])

 

결과


728x90
반응형