설계
반복문을 통해 문자열을 탐색하되 반복문의 범위 설정 중요
문자열 자르기, 숫자 문자열을 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
정리
∙ 문자열 자르는 방법 몇가지는 익숙해지자!
'알고리즘 & 문제풀이' 카테고리의 다른 글
프로그래머스 - L1 콜라 문제 (0) | 2023.02.06 |
---|---|
코딩 기술 - 문자열 자르기 (0) | 2023.02.04 |
자료구조 (0) | 2023.02.03 |
코딩 기술 - Comparable (0) | 2023.02.03 |
프로그래머스 - L1 문자열 내 마음대로 정렬하기 (0) | 2023.02.03 |