티스토리 뷰
문제 설명
문자열 배열 intStrs와 정수 k, s, l가 주어집니다. intStrs의 원소는 숫자로 이루어져 있습니다.
배열 intStrs의 각 원소마다 s번 인덱스에서 시작하는 길이 l짜리 부분 문자열을 잘라내 정수로 변환합니다. 이때 변환한 정수값이 k보다 큰 값들을 담은 배열을 return 하는 solution 함수를 완성해 주세요.
제한 조건
제한사항
0 ≤ s < 100
1 ≤ l ≤ 8
10l - 1 ≤ k < 10l
1 ≤ intStrs의 길이 ≤ 10,000
s + l ≤ intStrs의 원소의 길이 ≤ 120
내 답안
func solution(_ intStrs:[String], _ k:Int, _ s:Int, _ l:Int) -> [Int] {
var result = [Int]()
for i in intStrs {
let index = i.index(i.startIndex, offsetBy:s)
let lIndex = i.index(index, offsetBy:l - 1)
let str = i[index...lIndex]
let number = Int(String(str))!
if number > k {
result.append(number)
}
}
return result
}
접근 방법
다른 풀이
func solution(_ intStrs:[String], _ k:Int, _ s:Int, _ l:Int) -> [Int] {
return intStrs.map {
let startIdx = $0.index($0.startIndex, offsetBy: s)
let endIdx = $0.index(startIdx, offsetBy: l)
return Int(String($0[startIdx..<endIdx]))!
}.filter { $0 > k }
}
접근 방법은 나랑 비슷했는데 고차함수를 쓴 점이 나와 달랐다
func solution(_ intStrs: [String], _ k: Int, _ s: Int, _ l: Int) -> [Int] {
return intStrs.map { Int($0.prefix(s + l).suffix(l))! }.filter { $0 > k }
}
알게 된 것
문자열 추출할 때 prefix와 suffix는 전혀 생각도 못 했다
인덱스를 구해서 부분을 추출해야지만 생각했는데..문자열의 부분을 구할 때 이 두 함수를 사용할 수 있겠구나
'코딩테스트' 카테고리의 다른 글
Lv.0 swift 문자열 겹쳐쓰기 (1) | 2024.03.27 |
---|---|
Lv.0 swift 분수의 덧셈 (0) | 2024.03.27 |
Lv.0 swift 날짜 비교하기 (0) | 2024.03.25 |
Lv.0 swift 세로 읽기 (0) | 2024.03.24 |
Lv.0 swift 배열 만들기 3 (0) | 2024.03.23 |
최근에 올라온 글