우기의 알 블로그 저자 한승욱이라고 합니다.
스스로 알을 깨고 나오는 새처럼
언젠가 알을 깨고 온전한 나 자신이 되었을 때, 그때를 기다리며 제 속에서 솟아 나오는 것을 글로써 표현하고자 합니다.
'개발 기술블로그'를 위주로 저 한승욱의 다양한 관심사, 생각, 철학 등을 포스팅합니다.
classNode:def__init__(self, data):
self.data = data
self.next=NoneclassStack:def__init__(self):
self.head =Nonedefpush(self, value):
new_head = Node(value)
new_head.next= self.head
self.head = new_head
# pop 기능 구현defpop(self):if self.is_empty():return"Stack is Empty"
delete_head = self.head
self.head = self.head.nextreturn delete_head.data
defpeek(self):if self.is_empty():return"Stack is Empty"return self.head.data
# is_Empty 기능 구현defis_empty(self):return self.head isNone
실제 파이썬에서는 list를 이용해서 스택으로 사용
[6,9,5,7,4]# 라고 입력된다면,# 아래 그림처럼 탑이 있다고 보시면 됩니다!<-<-<-<-<- 레이저의 방향
I
I
I I
I I I
I I I I
I I I I I
I I I I I
I I I I I
I I I I I
[0,0,2,2,4]# 다음과 같이 반환하시면 됩니다!
맨 뒤에거가 없어지니까 스택 을 활용했다고 생각하면 된다.
top_heights =[6,9,5,7,4]defget_receiver_top_orders(heights):
answer =[0]*len(heights)# [0, 0, 0, 0, 0]while heights:# heights가 빈 상태가 아닐때 까지
height = heights.pop()for idx inrange(len(heights)-1,0,-1):if heights[idx]> height:
answer[len(heights)]= idx +1break# 7의 높이를 가진 레이저에 부딪히는 것을 알았기에 해당 7의 인덱스인 4를 answer의 맨 마지막 원소에 넣어야 함.# idx + 1은 위치를 알려주길 원했기 때문# answer에 넣으려면 하나 뺀것에 대한 것 더하기 1 이므로 인덱스로 해서 현재 나와 있는 스택의 길이로 함.return answer
print(get_receiver_top_orders(top_heights))# [0, 0, 2, 2, 4] 가 반환되어야 한다!
알고리즘 3주차 - 스택
스택
되돌리기
기능에 활용되는 구조스택
을 활용했다고 생각하면 된다.'기술개발 > Algorithm' 카테고리의 다른 글