Where who wants to meet someone

백준 Swift [10814] 나이순 정렬 본문

백준 알고리즘 문제 기록/정렬

백준 Swift [10814] 나이순 정렬

Lust3r 2023. 8. 7. 13:58
728x90

난이도

실버 V

 

문제

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

 

내 답안

struct Person {
    var order: Int
    var age: Int
    var name: String
}

var arr = [Person]()

for count in 1...Int(readLine()!)! {
    let input = readLine()!.split(separator: " ").map { String($0) }

    arr.append(Person(order: count, age: Int(input[0])!, name: input[1]))
}

arr.sort {
    $0.age == $1.age ? $0.order < $1.order : $0.age < $1.age
}

for i in arr.indices {
    print("\(arr[i].age) \(arr[i].name)")
}

- 구조체를 꼭(?) 써야 하는 문제..

- 똑같은 로직인데 구조체를 안 쓰면 틀렸습니다만 나오고, 구조체를 쓰는 순간 통과가 되어버린..

- 가입 순서, 나이, 이름 프로퍼티를 가지는 Person 구조체를 만들고, for문을 돌면서 각 순서(count)를 order에, input의 0번 값을 Int로 타입 캐스팅하여 age에, input의 1번 값을 name에 넣어준 Person을 arr에 추가한다.

- 이후 sort를 통해 age가 같다면 order순으로, age가 다르다면 age순으로 정렬할 수 있게 하였고, 각각을 출력하는 방식을 사용했다.