알고리즘/프로그래머스

[Programmers] 크기가 작은 부분문자열 _Python

3o14 2022. 12. 28. 01:21
728x90
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/147355

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

def solution(t, p):
    answer = 0
    len_p = len(p)
    len_t = len(t)
    
    list(t)
    p = int(p)
    for i in range(0, len_t):
        word = ""
        if len_t - i < len_p :
            # print("범위초과")
            break;
            
        n = i
        for j in range(0, len_p):
            word += t[n]
            n += 1
        
        # print(word)
        num = int(word)
        if num <= p :
            answer += 1
            # print("count++")

    return answer

# for문으로 p의 길이만큼 문자를 따내서 숫자로 변환
# 그 숫자와 p 크기 비교 후 카운트

 

다른 풀이

def solution(t, p):
    answer = 0

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

    return answer

 

이런 숏코딩 하시는거 보면 대단하시다 다들

아직 파이썬에 대한 이해도와 응용력이 부족한 것 같다

 

내 코드가 저렇게 길어진 이유는

1. 내가 if-break 처리한 부분은 range 범위로 아예 넣으셨고,

2. t는 문자열이지만 바로 리스트처럼 인덱싱 사용이 가능했다.

3. 리스트 콜론의 존재를 오랜만에 할때마다 까먹는다.

LIST