프로그래밍/Python

프로그래머스 - 햄버거 만들기(Python)

민또배기 2022. 11. 7. 11:08
반응형

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

 

프로그래머스

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

programmers.co.kr

레벨 1이지만 여전히 안되는 군요!

실무를 하는 사람으로서 많이 부끄러워지기도 하면서 또 더 배워 갈 수 있어 기쁘기도 합니다

 

아무튼!

 

햄버거를 만드는 문제인데, [빵, 야채, 고기, 빵] 순서가 되었을 때 햄버거 1개를 만들 수 있다고 합니다.

[빵, 빵, 야채, 고기, 빵, 야채, 고기, 빵] 이면 2개를 만들 수 있는거죠

 

그래서 저는 이런 생각을 했습니다.

[빵, 야채, 고기, 빵]이 순서대로 있으면 배열에서 빼고 다시 반복문을 돌린다!

그래서 다음과 같은 코드를 만들었지만 시간초과가 나왔습니다.

def solution(ingredient):
    answer = 0
    buf = ingredient
    isBurger = False
    for x in buf:
        idx = 0
        for i in range(len(buf)):
            if buf[i] == 1:
                if i+1 < len(buf):
                    if buf[i+1] == 2:
                        if i+2 < len(buf):
                            if buf[i+2] == 3:
                                if i+3 < len(buf):
                                    if buf[i+3] == 1:
                                        answer += 1  
                                        isBurger = True
                                        idx = i
                                        break
                                else:
                                    break
                        else:   
                            break
                else:   
                    break
        if isBurger == True:
            del buf[idx:idx+4]  
            isBurger = False
    return answer

정말 단순하게 생각했죠?

 

방법을 찾다가 deque를 이용하신 분이 있으셔서 가져와 봅니다. (링크)

import를 쓰지 않고 해보려고 한건데 사용하는 것이 확실히 깔끔하고 좋은 것 같습니다..

거기에 아직 파이썬에 대해 잘 알지 못하는 상태라 그런지 더 그런 것 같네요

 

수정한 코드

def solution(ingredient):
    answer = 0
    idx = 0
    while (idx < len(ingredient)-2):
        if ingredient[idx:idx+4] == [1,2,3,1]:
            del ingredient[idx:idx+4]
            answer += 1
            idx -= 5
        idx += 1
            
    return answer

 

 

 

반응형