백준 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를 따로 설정하지 않았는데, 따로 설정하지 않아도 그냥 정렬을 해주는가보다..

 

나도 설정 안했을 때 정답이랑 똑같이 나와서 설마.. 운빨이겠지

라고 생각했는데 아니였나보다


참고자료

https://haesoo9410.tistory.com/193

반응형

'개인활동 > 코테' 카테고리의 다른 글

백준 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