나의코드:
var N = Int(readLine()!)!
var newList : [[Any]] = Array(repeating: [], count: N)
//print(newList)
for index in 0..<N {
let info = readLine()!.components(separatedBy: " ")
let age = Int(info[0])!
let name = info[1]
newList[index].append(index)
newList[index].append(age)
newList[index].append(name)
}
var resultList = newList.sorted { anyList1, anyList2 in
if let listAge = anyList1[1] as? Int ,
let list2Age = anyList2[1] as? Int,
let listIndex = anyList1[0] as? Int,
let list2Index = anyList2[0] as? Int
{
if listAge == list2Age {
return listIndex < list2Index
}
return listAge < list2Age
}
return false
}
//print(newList)
for index in 0..<resultList.count {
print("\(resultList[index][1]) \(resultList[index][2])")
}
아래는 다른분 코드 인데, split을 사용할 경우 아래 append를 할때 string으로 받지못하고 substring로 받는다. 따라서 map을 이용해 string으로 바꿔야한다.
그러나 아래와 같이 components는 string으로 바꿔줘서 바로 사용할 수 있다.
아래와 같이 입력받는 연습을 했다. 다양한 케이스에 준비하기위해.
아래와 같이 비교 할 수도 있지만 보기가 안좋다..
아래는 다른 분의 깔끔한 코드.
다른 분 코드 출처: https://www.acmicpc.net/source/27314300