티스토리 뷰
Algorithm/[Java+Python+JavaScript]BackJoon
[Python]11650번, 파이썬에서 리스트 다중정렬 하기
Vagabund.Gni 2023. 4. 3. 10:28728x90
반응형
문제
2차원 평면 위의 점 N개가 주어진다.
좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다.
둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000)
좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
풀이
문제에서 주어진 기준은 파이썬에서 다차원 리스트를 정렬할 때 기본적으로 사용하는 기준이다.
따라서 그냥 아래처럼 정렬해도 답은 맞출 수 있다.
import sys
n = int(sys.stdin.readline())
b = []
for _ in range(n):
temp = list(map(int, list(sys.stdin.readline().strip().split())))
b.append(temp)
b.sort()
for i in b:
print(*i)
하지만 문제의 의도가 다중정렬에 관한 연습에 있고,
바로 다음 문제인 11651번에선 y좌표를 먼저 정렬하라고 시키기 때문에
여기서 한 번 짚고 넘어가는게 편하다.
우선 코드를 먼저 보자.
import sys
n = int(sys.stdin.readline())
b = []
for _ in range(n):
temp = list(map(int, list(sys.stdin.readline().strip().split())))
b.append(temp)
c = sorted(b, key=lambda x: (x[0], x[1]))
for i in c:
print(*i)
정렬 부분에 sorted()함수가 사용된 것을 확인할 수 있다.
여기서 sorted()함수는 반복 가능한 객체(리스트, 튜플, 세트 등)를 매개변수로 받아 정렬해주는 기능을 한다.
추가로 정렬 기준 역시 key 매개변수로 입력받는데, 이 경우에 우리가 원하는 정렬 방식을 함수로 전달해주면 된다.
위 코드에 적힌 람다식은 우리가 원하는, x좌표를 먼저, 그 다음 y좌표를 오름차순으로 정렬하는 식이다.
내림차순으로 정렬하려면? reverse=True 매개변수를 추가해주면 된다.
이 경우 코드는 아래와 같이 구성된다.
import sys
n = int(sys.stdin.readline())
b = []
for _ in range(n):
temp = list(map(int, list(sys.stdin.readline().strip().split())))
b.append(temp)
c = sorted(b, key=lambda x: (x[0], x[1]), reverse=True)
for i in c:
print(*i)
반응형
'Algorithm > [Java+Python+JavaScript]BackJoon' 카테고리의 다른 글
[Python]18870번, 좌표 압축, 딕셔너리, enumerate() 함수 (0) | 2023.04.06 |
---|---|
[Python]10814번, 조금 더 까다로운 정렬 (0) | 2023.04.04 |
[Python]1181번, 문자열을 길이순, 알파벳 순으로 정렬 (0) | 2023.04.04 |
[Python]1427번, 입력받은 문자열 리스트로 전환, 리스트 정렬 (0) | 2023.04.02 |
[BackJoon]11005번, 진법 변환2, 10 → B진법 (0) | 2023.04.01 |
[BackJoon]2745번, 진법 변환, B → 10진법 (0) | 2023.04.01 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 야경
- 면접 준비
- 동적계획법
- Backjoon
- BOJ
- 유럽여행
- 지지
- Algorithm
- a6000
- 파이썬
- spring
- 기술면접
- 백준
- 중남미
- java
- 유럽
- 리스트
- RX100M5
- 알고리즘
- Python
- 남미
- 여행
- 세모
- 세계여행
- 스트림
- 세계일주
- 맛집
- 자바
- 칼이사
- 스프링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함