알고리즘

(프로그래머스) 43. 크기가 작은 부분

이소금 2024. 2. 28. 19:34
반응형

작성 코드

def solution(t, p):
    cnt = 0
    if len(p) == 1: #if 구문과 else 구문이 동일하게 동작하므로 1자릿수에 대한 exception을 작성해 줄 필요가 없었음
        for i in range(len(t)):
            if int(t[i]) <= int(p):
                cnt += 1
    else:
        for i in range(len(t)-len(p)+1):
            if int(t[i:len(p)+i]) <= int(p):
                cnt += 1

    return cnt

개선안

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


시간복잡도 : O(N)

중첩문이 한개만 들어갔으므로

 

과정

- 슬라이싱에 관한 문제
- 개선안 도출 과정 : 처음에 length를 산정하는 과정에서 len(t) - len(p)로 잘못 계산하는 바람에 한자릿수에 대한 exception을 따로 작성하였으나 마지막에 +1을 더해주어야 하는 것을 알아차리고 더해줬음. 그래서 1에 대한 exception 핸들링을 하지 않아도 되게 됨

 

문자열 슬라이싱

    t = "500220839878"
    print(t[0:4])
    print(t[:4])
    # 5002, index number 3까지
반응형