본문 바로가기
알고리즘

[Swift] LeetCode - 937. Reorder Data in Log Files

by 고고 2022. 2. 14.

문제: https://leetcode.com/problems/reorder-data-in-log-files/

 

Reorder Data in Log Files - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

 

처음에 Letter log와 Digits log로 나누는 과정에서

Int($0) != nil 이렇게 검사하였는데 $0의 길이가 너무 크면 분명 숫자밖에 없음에도 Int로 인식하지 않아 틀렸습니다.

따라서 allSatisfy({ $0.isNumber })로 수정하여 통과하였습니다.

import Foundation

class Solution {
    func reorderLogFiles(_ logs: [String]) -> [String] {
        var digs = [String]()
        var lets = [String]()
        
        for log in logs {
            if log.split(separator: " ")[1].allSatisfy({ $0.isNumber }) {
                digs.append(log)
            } else {
                lets.append(log)
            }
        }
        
        lets.sort(by: {
            let array1 = $0.components(separatedBy: " ")
            let array2 = $1.components(separatedBy: " ")
            
            if array1[1..<array1.count] == array2[1..<array2.count] {
                return String(array1[0]) < String(array2[0])
            } else {
                return Array(array1[1..<array1.count]).joined(separator: " ") < Array(array2[1..<array2.count]).joined(separator: " ")
            }
        })
        
        return lets + digs
    }
}

var logs = ["j mo", "5 m w", "g 07", "o 2 0", "t q h"] // ["5 m w","j mo","t q h","g 07","o 2 0"]
Solution().reorderLogFiles(logs)

댓글