728x90
튜플을 사용하여 x좌표 먼저 값을 비교, y좌표 값을 다음으로 비교하여 정렬하는 문제이다.
이 문제를 풀면서 생각한 논리적 흐름은
- 입력 받은 값을 공백을 기준으로 튜플 형태로 배열에 저장한다.
- 배열의 sort 방식을 x값 먼저 비교해주고 만약 x값이 같다면 y값을 그 후 비교해준다.
- x값이 같지 않다면 바로 y값을 비교해준다.
- 그렇게 배열된 값을 순서대로 전부 출력해준다.
* 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)
- 튜플을 정렬하는 방식이 클로져 형태로 작동한다는 것을 알았다. 일반 형태의 array와 다르게 직접 비교할 tuple 형태를 잘 사용해야할 것 같다.
- $0.0, $1.0, $0.1, $1.1 등이 의미하는 위치 개념에 대해 알게 되었다. $0.0의 경우 첫번째 원소 중에서 0번째 값. 즉 첫번째 튜플 내에 첫번 째 value를 뜻한다.
'TIL > 알고리즘 공부' 카테고리의 다른 글
백준 1181번 Swift 알고리즘 연습 (0) | 2022.09.13 |
---|---|
백준 11651번 Swift 알고리즘 연습 (0) | 2022.09.13 |
백준 1427번 Swift 알고리즘 연습 (0) | 2022.09.10 |
백준 2108번 Swift 알고리즘 연습 (1) | 2022.09.10 |
백준 25305번 Swift 알고리즘 연습 (1) | 2022.09.10 |