Algorithm

크기가 작은 부분 문자열 / 프로그래머스

김예나 2025. 1. 21. 13:23

삼총사

def solution(number):
    answer = 0
    for i in range(0, len(number)):
        for j in range(i+1, len(number)):
            for k in range(j+1, len(number)):
                if number[i] + number[j] + number[k] == 0:
                    answer += 1
    return answer

 

크기가 작은 부분 문자열

  • 첫 번째 시도 -> 하지만 테스트 케이스에서 시간 초과 및 빈 객체에 pop했다는 에러 뜸
  • len(deq) >= len(p) 이  조건 또한 빼먹음
import collections
def solution(t, p):
    answer = 0
    deq = collections.deque(t)
    while len(deq) >= len(p):
        d = ""
        copy = ""
        recover = []
        for _ in range(len(p)):
            d += deq.popleft()
        copy = d[:]
        if int(p) >= int(copy):
            answer += 1
        recover = list(d)

        for _ in range(2):
            deq.appendleft(recover.pop())


    return answer
  1. 크기가 작은 부크기가 작은 부분 문자
  • 두 번째 시도
    • 그냥 덱이고 뭐고 슬라이싱을 하면 되는 거였다..
    • 뭔가 괜히 어렵게 생각하는 습관이 있는 것 같다;; (아직 개념적인 걸? 잘 몰라서 그런 것 같음)
import collections

def solution(t, p):
    answer = 0
    t_len = len(t)
    p_len = len(p)
    start = 0
    end = p_len

    while t_len - p_len >= 0:
        n = int(t[start:end])
        if n <= int(p):
            answer += 1
        start += 1
        end += 1
        t_len -= 1

    return answer