알고리즘 공부/미분류

좌표정렬하기 11651번 with Kotlin

_우지 2021. 7. 10. 22:50

좌표 정렬하기 2 성공

시간 제한메모리 제한제출정답맞은 사람정답 비율

1 초 256 MB 25394 16906 14210 68.558%

문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

예제 입력 1 복사

5 0 4 1 2 1 -1 2 2 3 3

예제 출력 1 복사

1 -1 1 2 2 2 3 3 0 4

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fun main(){
    val num = readLine()!!.toInt()
    val arr = ArrayList<Pair<Int,Int>>()
    for(i in 0 until num){
        val line = readLine()!!.split(" ").map{it.toInt()}
        arr.add(Pair(line[0],line[1]))
    }
    arr.sortWith(Comparator{d1,d2 -> if(d1.second == d2.second) {
        d1.first - d2.first
    }else{
        d1.second-d2.second
    }
    })
 
    for(i in 0 until num){
        println("${arr[i].first} ${arr[i].second}")
    }
}
cs