TIL/알고리즘 공부

백준 11650번 Swift 알고리즘 연습

여의도사노비 2022. 9. 10. 18:57
728x90

튜플을 사용하여 x좌표 먼저 값을 비교, y좌표 값을 다음으로 비교하여 정렬하는 문제이다.

 

 

이 문제를 풀면서 생각한 논리적 흐름은

  1. 입력 받은 값을 공백을 기준으로 튜플 형태로 배열에 저장한다.
  2. 배열의 sort 방식을 x값 먼저 비교해주고 만약 x값이 같다면 y값을 그 후 비교해준다.
  3. x값이 같지 않다면 바로 y값을 비교해준다.
  4. 그렇게 배열된 값을 순서대로 전부 출력해준다.

 

 

* 11650번

let N = Int(readLine()!)!
var array: [(Int, Int)] = []

for _ in 0..<N {
    let M = readLine()!.split(separator: " ").map{Int($0)!}
    array.append((M[0], M[1]))
}

array.sort(by: {
    $0.0 == $1.0 ? $0.1 < $1.1 : $0.0 < $1.0
} )

for i in 0..<N {
    print("\(array[i].0) \(array[i].1)")
}

 

 

정리(Today I Learned)

  1. 튜플을 정렬하는 방식이 클로져 형태로 작동한다는 것을 알았다. 일반 형태의 array와 다르게 직접 비교할 tuple 형태를 잘 사용해야할 것 같다.
  2. $0.0, $1.0, $0.1, $1.1 등이 의미하는 위치 개념에 대해 알게 되었다. $0.0의 경우 첫번째 원소 중에서 0번째 값. 즉 첫번째 튜플 내에 첫번 째 value를 뜻한다.