stack
리스트에 각각의 높이를 가진 N개의 막대기를 append하고, 문제 본문의 그림처럼 보는 방향에서 가장 먼저 보이는 막대기를 tallest
에 설정해준다. for문은 stack
의 길이에서 1을 뺀 N-1부터 스택의 끝까지 감산을 반복하며 stack[i]
원소가 tallest
보다 크다면, 보이는 막대(cnt
)에 1을 누적하면 된다.
import sys
import sys
N = int(sys.stdin.readline())
stack = []
cnt = 1 # 보이는 막대 갯수를 누적하기 위한 변수
# 가장 먼저 보이는 막대가 있으므로 1부터 시작
for _ in range(N):
stack.append(int(sys.stdin.readline().rstrip()))
tallest = stack[-1] # 우선, 가장 먼저 보이는 막대를 지정함
for i in range(N-1, -1, -1):
if stack[i] > tallest: # stack 원소 중 tallest보다 크면
cnt += 1 # 보이는 막대 수를 누적하고
tallest = stack[i] # tallest에 그 원소를 설정
print(cnt)