문제: https://leetcode.com/problems/reorder-data-in-log-files/
처음에 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)
'알고리즘' 카테고리의 다른 글
[Swift] LeetCode - 49. Group Anagrams (0) | 2022.02.14 |
---|---|
[Swift] LeetCode - 819. Most Common Word (0) | 2022.02.14 |
[Swift] 프로그래머스 - 후보키 (0) | 2022.02.11 |
[Swift] 프로그래머스 - 다단계 칫솔 판매 (0) | 2022.02.11 |
[Swift] 프로그래머스 - 예상 대진표 (0) | 2022.02.11 |
댓글