내 풀이
func solution(_ strings:[String], _ n:Int) -> [String] {
var arrayString = strings.map { $0.map { String($0) } }
arrayString.sort {
if $0[n] == $1[n] {
return $0.joined() < $1.joined()
}
return $0[n] < $1[n]
}
return arrayString.map { $0.joined() }
}
- strings 배열의 각 문자열을 문자 단위로 분리 후 2차원 배열 arrayString에 저장
→ 이를 통해 각 문자열을 문자 단위로 분리하고 나중에 정렬할 수 있음
- arrayString을 주어진 n번째 문자열 기준 정렬
→ 만약 n 번째 문자열이 같다면, 각 문자열을 결합한 후에 사전 순으로 정렬
- 정렬된 arrayString을 다시 문자열 배열로 변환하여 반환
또 다른 풀이
func solution(_ strings:[String], _ n:Int) -> [String] {
return strings.sorted{ Array($0)[n] == Array($1)[n] ? $0 < $1 : Array($0)[n] < Array($1)[n] }
}
- sorted 메서드를 사용하여 문자열 배열 strings 정렬
→ 이 때, 클로저를 이용하여 비교 함수를 제공함
- 비교 함수에서 두 개의 문자열 비교
→ Array($0)[n] == Array($1)[n] 조건을 사용하여 두 문자열의 n번째 문자가 같은지 확인
- 두 문자열의 n번째 문자가 같다: $0 < $1 조건을 사용하여 사전 순으로 정렬
- 두 문자열의 n번째 문자가 다르다: $0와 $1 중에서 n번째 문자가 작은 것을 우선하여 정렬
- 최종적으로 정렬된 결과 반환
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 두 개 뽑아서 더하기 (2) | 2024.03.12 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - K번째수 (2) | 2024.03.11 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 숫자 문자열과 영단어 (0) | 2024.03.07 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 시저 암호 (0) | 2024.03.06 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 최소 직사각형 (2) | 2024.03.05 |