본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 문자열 내 마음대로 정렬하기

 

 

 

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

 

내 풀이

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번째 문자가 작은 것을 우선하여 정렬

- 최종적으로 정렬된 결과 반환

 

 

 

 

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31