백준 11650번 : 좌표 정렬하기
2024. 1. 26. 20:32ㆍ개인활동/코테
반응형
11650번: 좌표 정렬하기
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
이차원 배열을 뭔가 우선순위를 두고 정렬할 수 없을까
하며 이것저것 자료를 찾아보던 중 유레카를 외치게 되는 자료를 찾고, 드디어 이 문제를 해결했다.
n = int(input())
coor_list = sorted([list(map(int, input().split())) for _ in range(n)], key=lambda x : (x[0], x[1]))
for i in coor_list:
print(*i)
이 코드의 포인트는 sorted 함수의 key 옵션에 있는 lambda 함수이다
lambda 함수 뒤에 있는 (x[0], x[1])의 의미가 바로
0번째 element를 기준으로 정렬 후 1번째 element를 기준으로 정렬하라는 의미가 된다
숏코드 분석 ㄱ
for i in sorted([[*map(int,s.split())]for s in open(0)][1:]):print(*i)
전반적인 내용은 비슷한데
open(0)을 이용해 입력받은 것들을 그대로 가지고와 s에 전달,
map 함수를 이용해 불러오고 중첩 리스트에 저장
asterisk를 이용해 각 요소를 넣어주고, 첫번째로 입력받은 값은 총 입력 갯수이기 때문에 제외
for문을 한줄로 만들어 출력해준다
그런데 의문이 들었다
여기선 key를 따로 설정하지 않았는데, 따로 설정하지 않아도 그냥 정렬을 해주는가보다..
나도 설정 안했을 때 정답이랑 똑같이 나와서 설마.. 운빨이겠지
라고 생각했는데 아니였나보다
참고자료
반응형
'개인활동 > 코테' 카테고리의 다른 글
백준 10773번 : 제로 (0) | 2024.02.09 |
---|---|
백준 10814번 : 나이순 정렬 (1) | 2024.02.01 |
백준 1181번 : 단어 정렬 (1) | 2024.01.24 |
백준 1427번 : 소트인사이드 (0) | 2024.01.21 |
백준 2587번 : 대푯값 (0) | 2024.01.12 |