스택 예제 - 2

문제 분석

  • N의 최대 크기가 100,000이므로 모든 수를 반복문으로 오큰수를 찾으면 제한 시간을 초과한다.

  • 스택을 사용해 해결할 수 있다.

핵심 아이디어

  • 스택에 새로 들어오는 수가 top에 존재하는 수보다 크면 그 수는 오큰수가 된다.

  • 오큰수를 구한 후 수열에서 오큰수가 존재하지 않는 숫자에 -1을 출력한다.

손으로 풀어보기

  1. 스택이 채워져 있고, A[index] > A[top]인 경우 pop한 인덱스를 이용하여 정답 수열에 오큰수를 저장한다. pop은 조건을 만족하는 동안 반복한다.

  2. 현재 인덱스를 스택에 push하고 다음 인덱스로 넘어간다.

  3. 과정 1~2를 수열 길이만큼 반복한 다음 현재 스택에 남아있는 인덱스에 -1을 저장한다.

img_1.png
img_2.png

슈도코드

코드 구현 - 파이썬

코드 구현 - 자바

Last updated