햄버거 재료 리스트가 주어지는데, 빵-야채-고기-빵으로 들어오는 순서의 갯수를 정하라.
일단 스택을 사용해야 겠다고 생각했다. 문제에서 나와있듯이 숫자를 쌓아서 순서를 확인하는 거니까. 스택의 길이가 4 이상이면 햄버거 재료를 POP해서 순서에 맞는지 보고 만지 않으면 False를 반환, 전부 맞으면 True를 반환하는 함수를 작성했다. 여기서 만일 햄버거 순서와 맞지 않을 때 재료를 다시 넣어줘야 하므로 재료들을 임시 저장할 때는 tmp 리스트를 이용했다.
나와 비슷하지만, 조금 다르게 푼 방법이 있었는데 그냥 재료 리스트의 뒤에서부터 위치를 찍어서 검사하는 거다. 아무래도 Python보다 Java를 더 많이 쓰던 터라, Python에서는 스택이 리스트와 결을 같이 한다는 것을 생각하지 못했다 구현은 리스트로 했으면서. 그래서 재료의 순서가 뒤에서부터 검사했을 때 1, 3, 2, 1이면 총 네 번 pop해주고 answer에 1을 더해줘도 된다.
python
def solution(ingredient):
answer = 0
hambugers = []
def check():
count = 0
right = [1, 3, 2, 1]
tmp = []
for i in range(4):
current = hambugers.pop()
tmp.append(current)
if current != right[i]:
# print(f"{current}에서 탈락")
while len(tmp) != 0:
hambugers.append(tmp.pop())
return False
return True
for ingre in ingredient:
hambugers.append(ingre)
if len(hambugers) >= 4:
if(check() == True):
answer += 1
return answer