[Swift] 10818 최소, 최대 - 백준 B3
Swift로 백준 10818 최소, 최대 문제를 해결하며 얻은 지식을 정리합니다. Swift로 접근해서 그런지 시간 초과를 많이 경험할 수 있었고 타입 변환 시 순서나 징검다리 타입(최종 타입으로 변환하기 위해 거쳐가는 타입) 따라 처리 속도가 다르다는 점을 알게 되었습니다.
풀이
let n: Int = Int(readLine()!)!
let numbers: [Int] = readLine()!.split(separator: " ").map { Int(String($0))! }
print(numbers.min()!, numbers.max()!)
고찰
입력 후 공백 단위로 문자열을 나누에 배열에 넣는 방법으로 readLine()!.split(separator: " ")
방식을 많이 활용하고 있습니다. 이 결과로 반환 받는 결과의 타입은 [String.SubSequence]
으로 보통의 [String]
과는 타른 타입임을 알고 계실 것입니다. SubSequence
는 아래 공식 문서와 같이 Collection 타입에서 어떤 것의 부분 (Subrange 또는 Slice)임을 나타내는 타입인데, 배열 내부 각 요소의 타입을 map(_:)
과 Int
의 이니셜라이저를 통해 Int
타입으로 변환할 때 String.SubSequence -> Int
보다 String.SubSequence -> String -> Int
의 수행속도가 더 빠르다는 것을 알게 되었습니다.
문제의 예제입력 1인 20 10 35 30 7
을 대상으로 수행속도를 측정해보았습니다.
String.SubSequence -> Int
수행속도
0.0008 ~ 0.001 초
String.SubSequence -> String -> Int
수행 속도
0.0006 ~ 0.0007 초
Author And Source
이 문제에 관하여([Swift] 10818 최소, 최대 - 백준 B3), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ryan-son/Swift-10818-최소-최대-백준-B3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)