Stay Hungry Stay Foolish

프로그래머스 코딩테스트/Level 1

[Programmers] L1. 크기가 작은 부분문자열 (Python)

dev스카이 2024. 10. 25. 23:38

[문제 링크] 👇

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


풀이

t 의 길이에서 p 의 길이를 뺀 후 + 1 만큼 for문을 돌린다.

  •  만일 t 의 길이가 7이고, p 의 길이가 3일 때 연산을 하면 4이다. 4번째 인덱스까지 확인하기 위해 + 1을 해준다. 
  • 이렇게 해주는 이유는, t를 p 만큼의 길이로 슬라이싱을 하기 때문이다.
  • 현재 위치(i) 부터 p의 길이 + 현재 위치(i) 까지 자르면 p 만큼의 길이를 확인할 수 있다.
    • 예를 들어 현재 위치가 4라고 할 때, p의 길이인 3과 현재 위치 4를 더하면 7이 된다. 즉 4 번째 인덱스부터 6 번째 인덱스까지 자르는데 6번째 인덱스는 t의 마지막 인덱스이기 때문에 p의 길이를 빼준 만큼 for 문을 돌려야 한다.

 

자른 문자열과 p는 문자이기 때문에 값 비교를 위해 정수형으로 변환한다.

int()
  • 정수로 변환활 문자열을 인자로 전달하면 정수형을 반환한다.

 

슬라이싱 방법

str[start:end]
  • start 부터 end 까지 자른다.
str[0:]  # 0번째 인덱스부터 끝까지 자르기
str[:5]  # 첫 번째 인덱스부터 4번째 인덱스까지 자르기
str[:]  # 모든 인덱스 가져오기

 

Solution

def solution(t, p):
    answer = 0
    for i in range(len(t) - len(p) + 1):
        if int(p) >= int(t[i:len(p) + i]):
            answer += 1
    return answer