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
반응형