반응형

문제링크

 

11651번: 좌표 정렬하기 2

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

두 값을 입력받아서 배열에 넣어서 sorting해줘야 하는데 어떤식으로 넣을 지가 첫 번째 관건이고, 두 번째는 그 데이터를 어떻게 sorting할 지다. 

 

정답코드

l = []
for i in range(int(input())):
    l.append(list(map(int, input().split())))
l.sort(key=lambda x: (x[1], x[0]))
for i in range(len(l)):
    print(l[i][0], l[i][1])

 생각보다 간단했다.

 

*첫 번째 고난 해결법

원래 두 값을 받던 식으로 map(int, input().split())으로 받고, 그리고 그 데이터를 list로 감싼다. 그 후 그 값들을 l에 append를 계속 해 나가면서 추가해 준다.

그러면 1,2와 3,4라는 값을 입력했을 때  [[1,2], [3,4]]라는 값을 감싸지게 된다.

 

*두 번째 고난 해결법

sorting을 하는 것인데, 저번에도 포스팅했던 것 같았는데 또 까먹었다. lambda를 사용하는데, x[1]을 기준으로 정렬을 하고, x[1] 다음 우선순위로는 x[0]가 온다. x[1]이 같다면 x[0]로 sorting을 하는 것.

 

그리고 l[i]의 0번째 인덱스와, 1번째 인덱스를 번갈아가면서 출력해주면 정상적으로 출력이 된다.

반응형

+ Recent posts