알고리즘 & 문제풀이
프로그래머스 - L1 크기가 작은 부분 문자열
김쿡
2023. 2. 4. 16:20
설계
반복문을 통해 문자열을 탐색하되 반복문의 범위 설정 중요
문자열 자르기, 숫자 문자열을 Int 변환하기
조건에 맞는 경우 카운팅
git : 크기가 작은 부분 문자열
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/147355
문제 풀이
Array를 Slice 한 값을 Int로 변환하는 convertArrayToInt 정의
p의 문자열 길이를 구해 반복문 range 설정
반복하여 조건에 맞을 경우 카운팅
import Foundation
func solution(_ t:String, _ p:String) -> Int {
var result: Int = 0
let pLength = p.count
let tLength = t.count
guard let pInt = Int(p) else {
return result
}
let tArray = Array(t)
let pNumber = Int(p)
for startIndex in 0...tLength - pLength {
if let tNumber = convertArrayToInt(tArray[startIndex..<startIndex+pLength]), let pNumber = pNumber {
if(tNumber <= pNumber){
result += 1
}
}
}
return result
}
func convertArrayToInt(_ array: ArraySlice<Character>) -> Int? {
guard let result = Int(String(array)) else {
return nil
}
return result
}
print(solution("500220839878","7"))
다른 사람 풀이 분석
프로그래머스 - giboJK , 곽용범 님
import Foundation
func solution(_ t:String, _ p:String) -> Int {
var answer = 0
for i in 0 ... t.count - p.count {
let subStr = t.dropFirst(i).prefix(p.count)
if let comp = Int(subStr), let val = Int(p) {
answer += comp - val <= 0 ? 1 : 0
}
}
return answer
}
∙ dropFirst 와 prefix 를 활용하여 문자열 slice
정리
∙ 문자열 자르는 방법 몇가지는 익숙해지자!