일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 라이브템플릿
- javascript
- error
- Dijkstra
- 프로그래머스
- Spring
- beandefinitionstoreexception
- codility
- 2018 KAKAO BLIND RECRUITMENT
- API
- HTTP
- 소수
- 백준
- 탐욕법
- 파이썬
- springboot
- 최단경로
- Greedy
- counting elements
- algorithm
- BFS
- 문자열
- 알고리즘
- Python
- brute force
- java
- 2981
- spring security
- applicationeventpublisher
- 코딩테스트
Archives
- Today
- Total
Altiora Petamus
좌표 정렬하기 본문
11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
🤔생각해보기
파이썬의 정렬은 람다를 사용할 수 있다. 다중 조건일 경우 튜플로 넣어주면 되므로 아주 간단하게 해결할 수 있다.
성공 코드
N = int(input())
position = sorted([tuple(map(int, input().split())) for _ in range(N)], key=lambda x: (x[0], x[1]))
for pos in position:
print(*pos)
갑자기 흥미가 생겨서 약간의 가독성을 희생시키고 코드 길이를 줄여보았다 ㅋㅋ...
여기서 더 줄이려면 좌표의 개수를 받아오는 N도 position 안으로 넣어버리면 되지만, 굳이 그렇게까지 하진 않았다.
코드를 간단하게 해설하자면,
- N 만큼 루프를 돌면서 배열 안에 튜플로 좌표값을 저장한다.
- sorted 로 정렬하는데 lambda 를 활용하면 x[0] 값을 먼저 정렬한 후, 그 중 x[1] 값으로 다시 정렬할 수 있다. 조건은 튜플로 넣어준다.
- *args 를 사용하여 담겨있는 값들을 순차적으로 출력한다.
더 알아두면 좋은 점
- 람다의 키 값으로 '-' 를 붙이면 내림차순으로 정렬이 된다.
- 출력할 때 * 를 붙여서 출력하면 요소의 값을 띄워서 출력한다. → 문제 해결할 때 아주 꿀팁!