스택 사용 기본 문제
문제설명
문자열 s가 주어졌을 때 s로부터 만들 수 있는 부분 문자열 중 사전 순으로 가장 뒤에 나오는 문자열을 리턴하는 solution 함수를 완성해주세요.
예를 들어 문자열 xyb로 만들 수 있는 부분 문자열은 다음과 같습니다.
x
y
b
xy
xb
yb
xyb
이 중 사전 순으로 가장 뒤에 있는 문자열은 yb입니다.
입출력 예
s result
xyb yb
yxyc yyc
솔루션
스택이 비어있거나 더 뒤에 오는 문자가 top에 위치해 있을경우 push해준다.
스택에 문자들이 있을 때는 top부터 현재 문자보다 뒤에 오는 문자를 만날때까지 pop해준다.
코드
# 파이썬
def solution(s):
stack = []
for char in s:
while stack and stack[-1] < char:
stack.pop()
stack.append(char)
return ''.join(stack)
주의
문자열을 반복할 때 맨위에 문자뿐만아니라 더 뒤에 있는 문자를 만날때까지 반복해주어야 한다.
(while 사용)