햄버거 만들기

최민수·2023년 3월 4일
0

알고리즘

목록 보기
27/94
⭐️
def solution(ingredient):
    answer = 0
    
    temp = []
    for item in ingredient:
        temp.append(item)
        if len(temp) >= 4 and temp[-4:] == [1,2,3,1]:
            answer += 1
            for k in range(4):
                temp.pop()
    
    return answer

먼저 생각한 풀이는
1. list를 str으로 변환시켜서
2. 패턴에 맞는 스트링을 find
3. substring을 이어붙여서 기존 배열을 고치고 반복하는 것이었음.

하지만 테스트 케이스 2개에서 계속 시간초과가 남.
기존 배열을 substring으로 이어붙이고 다시 assign 하는 과정에서 시간을 많이 잡아 먹는 것 같았음.

바꾼 풀이는
1. item을 한개씩 넣으면서 패턴을 만족하는지 확인
2. 만족하면 끝의 4개를 pop
3. 주어진 배열 끝까지 순회.

결과는 통과!
즉, 웬만하면 string의 find나 remove, substring 이어붙이기 보다 pop이 훨씬 빠름.

출처: 프로그래머스 연습문제, https://school.programmers.co.kr/learn/challenges

profile
CS, 개발 공부기록 🌱

0개의 댓글