Sort를 이용한 해결

정렬을 할 때 sort 메서드 사용하면 쉽게 해결할 수 있습니다. sort 에는 $0과 $1 을 서로 비교하여 정렬할 수 있도록 구현된 메서드입니다.

추가로 설명하면 sort는 O(n log n) 시간 복잡도를 가집니다.

 

만약 $0과 $1의 값이 튜플이라면 $0.0 으로 첫번째 값, $0.1로 두번째 튜플의 값에 접근할 수 있으며 다음과 같이 문제를 해결할 수 있습니다.

  • 만약 비교하고자 하는 x 좌표가 같다면 y 좌표의 크기 비교하여 정렬을 하며
  • 만약 비교하고자 하는 x 좌표가 틀리면 x 좌표의 크기를 비교하여 정렬을 합니다.
let line = Int(readLine()!)!
var arr: [(Int, Int)] = []

for _ in 1...line {
    let num = readLine()!.split(separator: " ").map{Int($0)!}
    arr.append((num[0],num[1]))
}

arr.sort { $0.0 == $1.0 ? $0.1 < $1.1 : $0.0 < $1.0 }

for i in arr {
    print(i.0, i.1)
}
ytw_developer