이 험난한 세상에서어어~

크기가 작은 부분 문자열, python 본문

algorithm/코딩 테스트

크기가 작은 부분 문자열, python

토끼띠NJW 2023. 6. 3. 11:49

문제 설명

문자열 t와 p가 있다. 여기서 p만큼의 길이를 가진 t의 부분 문자열이 정수형으로 변환했을 때 더 작으면 answer에 값을 하나씩 올려준다.

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

 

프로그래머스

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

programmers.co.kr

문제 풀이

첫 번째 접근

문자열 t를 p만큼 잘라서 확인을 해주면 되는 문제였다. 여기서 조심해야 할 점은 바로 인덱스 오류. 그렇기에 제일 마지막에 검사할 것은 len(t) - len(p) + 1로 끝을 정해주면 된다.

 

문자열을 시작 부분 부터 len(p)만큼 잘라서 자른 문자열이 정수형으로 변환될 수 있는지 확인한 후 검사를 해서 p보다 작으면 answer에 1을 올려주는 방식을 사용했다.

 

그러나 파이썬은 정수형으로 바꿀 때 굳이 이게 정수형으로 변환될 수 있는지는 확인할 필요가 없다. 걍 int해주면 알아서 확인하고 0을 제거하는 등 변환해주는 모양. 

 

코드

첫 번째 코드

def solution(t, p):
    answer = 0
    intP = int(p)

    for i in range(0, len(t)-len(p)+1):
        current = t[i:i+len(p)]
        if current[0].isdecimal():
            current = int(current)
            if current <= intP:
                answer += 1

    return answer

두 번째 코드

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

        
    return answer

'algorithm > 코딩 테스트' 카테고리의 다른 글

로봇 청소기, python  (0) 2023.06.18
콜라 문제, python  (0) 2023.06.03
가장 가까운 같은 글자, python  (0) 2023.06.03
카드 뭉치, python  (0) 2023.06.03
기사단원의 무기  (0) 2023.06.02