연습장

18. 햄버거 만들기 본문

프로그래머스/1단계

18. 햄버거 만들기

js0616 2024. 1. 19. 14:58

빵 - 야채 - 고기 - 빵 순서 1231 을 1개의 값으로 한다.

 

 

2 1 1 2 3 1 2 3 1 

 

2 1 2 3 1 

 

2

 

총 2개 의 햄버거를 만들게 된다.


1. 주어진 배열의 앞에서부터 1231 이라는 순서가 나오게 되면

2. 기존 배열에서 제거하고

3. result 를 1 더하면 될거같다. 

4. 그리고 제거 된 배열을 사용하여 1-3 을 반복 

 

 

def solution(ingredient):
    answer = 0
    b = ""
    for i in ingredient:
        b += str(i)
    
    while "1231" in b:
        b = b.replace("1231", "")
        answer += 1
    
    return answer

 

테스트 케이스에 실패가 나오는것으로 보아

재료를 다 쌓고 하는게 아닌 쌓는 동시에 1231 이 되는지 확인해야 될것 같다.

 


def solution(ingredient):
    answer = 0
    b = ""
    for i in ingredient:
        b += str(i)
        if "1231" in b:
            b = b.replace("1231", "")
            answer += 1
            
    return answer

 

 

 

 

시간 초과가 걸리게 되었다.

 


다시 처음으로 돌아가서 생각해보면 

 

replace 가 한번에 다바꿔서 그렇게 된것 같아서

 

replace 에 제한을 주었다.

 

 

def solution(ingredient):
    answer = 0
    b = ("").join(str(i) for i in ingredient)
    
    while True:
        if "1231" in b:
            b = b.replace("1231", "",1)
            answer += 1
            
        else :
            break
    
    return answer

 

 

그 결과 테스트3 이 해결이 되긴했는데 .. 아무튼 시간초과 가 걸리게 된다. 

 


 

다시 생각해봤는데 특정 문자열 "1231" 이 생기는것을 비교하는곳은 결국 맨 뒷부분이 된다.  따라서 문자를 추가하고 맨뒤의 문자열 4개가 1231 이 되었는지만 확인하면 되지않을까? 

 


def solution(ingredient):
    answer = 0
    b = ""
    for i in ingredient:
        b += str(i)
        if "1231" in b[-4:]:
            b = b.replace("1231", "",1)
            answer += 1
            
    return answer

 

 


마찬가지로 제거하는 부분도 맨 뒤에 4자리만 없애면 되지 않을까? 

 

def solution(ingredient):
    answer = 0
    b = ""
    for i in ingredient:
        b += str(i)
        if "1231" in b[-4:]:
            b = b[:-4]
            answer += 1
            
    return answer

 

그래서 replace 를 쓰지 않았더니  훨씬 빠르게 연산되는것을 확인 할 수 있었다. 

'프로그래머스 > 1단계' 카테고리의 다른 글

20. 성격 유형 검사하기  (0) 2024.01.20
19. 신규 아이디 추천  (0) 2024.01.19
17. 키패드 누르기  (0) 2024.01.19
16. 크레인 인형뽑기 게임  (0) 2024.01.17
15. 이웃한 칸  (0) 2024.01.17