<aside> 💡

반복문을 어떻게 돌리고 어떻게 문자열을 자를것이냐가 관건

</aside>

문제

147355

아이디어

  1. 얼마나 반복할 것인가? → t의 전체 문자열 길이 중에서 p의 길이만큼 쪼갠 부분 문자열을 t의 길이만큼 반복해야 함
    1. ex) t = “3141592” p = “271”인 경우 t의 길이다 3인 부분 문자열은 총 5번 진행되어야 함
    2. len(t)-len(p)+1 만큼의 반복문을 돌아야 함
  2. 그럼 총 반복문을 도는 동안 어떻게 t의 문자열을 짜를 것인가? → 한칸씩 계속 뒤로가기 효과가 있어야 됨
    1. 슬라이싱을 이용해서 자르자 → t[i:i+num]
  3. 슬라이싱 한 걸 저장한 다음 p와 비교한 다음 작거나 같을 경우만 answer에 count

코드

def solution(t, p):
    answer = 0
    num = len(p)
    
    for i in range(len(t)-num+1):
        sub_str = t[i:i+num]
        
        #만약 자른 숫자가 p보다 작을 경우 합 누적
        if sub_str <= p:
            answer += 1
        else:
            continue
        
    return answer