우선 필터 구문이 떠올랐다. 그리고 새로운 배열을 생성한 뒤, 필터로 숫자만 걸러내어 오름차순을 정리하려고 했다. 우선 오름차순으로 정리하는것은 간단하니 필터 먼저 적용해보았는데..
[String]을 [Int]로 바꿔도 안되고 그냥 안됐다. return 뒤에 배열을 Int형으로 바꿔주는것도 안되는것 같다. 그렇게 1시간 넘게 헤맸으나 답을 찾지 못했다.
그리고 답을 확인해봤다.
우선 filter와 map을 사용한 풀이.
근접하게 까진 갔었는데,
Int(String($0))!
이 구문을 몰라서 사용하지 못했다. 문맥으로 추측건데, 아마 모든 String요소를 Int로 전환하는 형태인 것 같다.
우선 필터로 숫자만 걸러낸뒤 .을 이용해 map을 이어서 사용하여 Int요소들로 변경하여 Int 배열로 변환하고 정렬했다.
그 다음은 cmpactMap 활용 구문이다.
애플 공식문서에서
let possibleNumbers = ["1", "2", "three", "///4///", "5"]
let mapped: [Int?] = possibleNumbers.map { str in Int(str) }
// [1, 2, nil, nil, 5]
let compactMapped: [Int] = possibleNumbers.compactMap { str in Int(str) }
// [1, 2, 5]
이렇게 설명했는데 저렇게 실행했을때는 되지 않았다.
Int(String($0))!
이걸 그냥 암기해야할것같다. String요소를 Int요소로 바꿔주는 키워드라고