TIL

[240315] 배열비교

2024. 3. 15. 10:51

1. 문자열에서 인덱스를 이용하기 위해서 배열로 바꾸고 크기를 비교하여 정렬하려 했는데, 계속 오류가 났다.

알고보니 숫자 배열은 크기 비교가 가능하지만, 문자열 배열은 크기 비교가 불가능하다. 그래서 $0 < $1에서 문제가 생긴 것!

정답 풀이를 보니, 나처럼 문자열을 배열로 바꾸고 > 정렬 후 > 다시 문자열로 바꿀 필요없이 sorted() 함수 안에서 조건을 비교할 때만 배열로 바꿔줘도 되는 것이어따.

그래도 sorted()를 단순 오름차순, 내림차순이 아닌 조건에 따라 정렬하도록 잘 써봤고, [String] 끼리는 크기를 비교할 수 없다는 걸 배웠다!

// 내가 작성한 코드
func solution(_ strings:[String], _ n:Int) -> [String] {
    return strings.map { Array($0) }.sorted { $0[n] == $1[n] ? $0 < $1 : $0[n] < $1[n] }.map { String($0) }
}
// 정답 코드
func solution(_ strings:[String], _ n:Int) -> [String] {
    return strings.sorted { Array($0)[n] == Array($1)[n] ? $0 < $1 : Array($0)[n] < Array($1)[n] }
}