본문 바로가기
알고리즘

[Swift] 백준 10814번 나이순 정렬

by 고고 2022. 3. 21.

링크: https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

 

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])
}

 

 

보통은 튜플이 배열보다 느렸던 거 같은데 이번에는 튜플이 더 빨랐습니다.

댓글