링크: https://www.acmicpc.net/problem/10814
1. 튜플로 풀기 - 평균 250ms 시간 소요
import Foundation
let N = Int(readLine()!)!
var people = [(index: Int, age: Int, name: String)]()
for i in 0..<N {
let person = readLine()!.split(separator: " ").map { String($0) }
people.append((index: i, age: Int(person[0])!, name: person[1]))
}
// 나이 순, 나이가 같으면 가입한 순
for person in people.sorted(by: { $0.age == $1.age ? $0.index < $1.index : $0.age < $1.age }) {
print(person.age, person.name)
}
2. 배열로 풀기 - 평균 350ms 시간 소요
import Foundation
let N = Int(readLine()!)!
var people = [[String]]()
for i in 0..<N {
let person = readLine()!.split(separator: " ").map { String($0) }
people.append([String(i), person[0], person[1]]) // 가입한 순서, 나이, 이름
}
// 나이 순, 나이가 같으면 가입한 순
for person in people.sorted(by: { $0[1] == $1[1] ? Int($0[0])! < Int($1[0])! : Int($0[1])! < Int($1[1])! }) {
print(person[1], person[2])
}
보통은 튜플이 배열보다 느렸던 거 같은데 이번에는 튜플이 더 빨랐습니다.
'알고리즘' 카테고리의 다른 글
2022 SK ICT 2차 코딩테스트 후기 (0) | 2022.03.23 |
---|---|
[Swift] 백준 1475번 방 번호 (0) | 2022.03.21 |
[Swift] 백준 14888번 연산자 끼워넣기 (0) | 2022.03.19 |
[Swift] 백준 2609번 최대공약수와 최소공배수 (0) | 2022.03.18 |
[Swift] 백준 2581번 소수 (0) | 2022.03.18 |
댓글