고양이와 코딩

[프로그래머스] 컨트롤 제트.py 본문

python

[프로그래머스] 컨트롤 제트.py

ovovvvvv 2023. 4. 15. 00:16
728x90

ㄴ ㅏ는 왜 stack을 생각하지 모태쓸까?

 

 

문제

 

코드

def solution(s):
    answer = 0
    
    list = s.split()
    for i in range(len(list)):
        if list[i] == 'Z':
            answer -= int(list[i-1])
        else:
            answer += int(list[i])
        
    return answer

오늘도 구글의 도움을 받아 코드를 작성했다!

이럴 때 마다 이렇게 모를 때 몇시간 고민을 하지 않고 답을 보는게 맞나? 싶은 생각이 드는데

그냥 배끼는게 아니라 그 과정에서 배우는게 있다면 !! 괜찮은 거라고 생각한다( 내 생각 ~^^)

 

!! 나의 실수들 !!

1.  split() 할 생각을 안함

2. list[i-1] 앞에 int 를 쓸 생각 안함

 

그리고 다른 사람의 답변 

def solution(s):
    stack = []
    for i in s.split():
        if i != 'Z':
            stack.append(int(i))
        else:
            if stack:
                stack.pop()

    return sum(stack)

스택을 사용한 코드인 것이다!!

전공수업에서 배운 것들을 알차게 써먹는 고수들을 보면 신기하다.

 

1. 비어있는 stack에 i가 'Z' 가 아닌 경우 i를 정수로 변환해서 stack 리스트에 추가한다!

2. i가 'Z' 일 경우에 stack이 비어있지 않다면, 가장 마지막에 추가된 값을 pop()으로 제거한다.