백준_나이정렬_swift
나의코드:
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])")
}
- Any타입을 연습하기 위해 사용해보았다.
- sorted 클로저를 사용해보았다.
아래는 다른분 코드 인데, split을 사용할 경우 아래 append를 할때 string으로 받지못하고 substring로 받는다. 따라서 map을 이용해 string으로 바꿔야한다.
그러나 아래와 같이 components는 string으로 바꿔줘서 바로 사용할 수 있다.
아래와 같이 입력받는 연습을 했다. 다양한 케이스에 준비하기위해.
아래와 같이 비교 할 수도 있지만 보기가 안좋다..
아래는 다른 분의 깔끔한 코드.
- 100,000 이라는 큰 숫자를 건드리지 않고 나이 200 이라는 작은 숫자를 이용했다. 발상의 전환 굿..
다른 분 코드 출처: https://www.acmicpc.net/source/27314300
Author And Source
이 문제에 관하여(백준_나이정렬_swift), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kyustudyo/백준나이정렬swift저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)