동까의 코딩

[Python] 백준 17608 : 막대기 본문

문제 풀이/백준

[Python] 백준 17608 : 막대기

동까의 코딩 2024. 4. 3. 03:50
반응형

스택 문제 중 하나인 막대기를 풀어보았다.

 

https://www.acmicpc.net/problem/17608

 

17608번: 막대기

아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로

www.acmicpc.net

 

스택에 다 넣어주고 빼면서 높은 건물이 나올때 기준 높이를 바꿔주면 될 것 같다.

오른쪽부터 시작하니 맨 오른쪽을 기준 높이로 잡고 왼쪽으로 하나씩 확인해 나간다.

 

import sys

input = sys.stdin.readline

N = int(input())
stack = []
cnt = 1
for _ in range(N):
    num = int(input())
    stack.append(num)
right_stick = stack[N - 1]
idx = N - 2
while True:
    if right_stick < stack[idx]:
        cnt += 1
        right_stick = stack[idx]
    if idx == -1:
        break
    idx -= 1
print(cnt)

 

처음 제출 시 시간초과가 났었는데 input을 readline으로 바꿔주니 해당 이슈는 없어졌다.

 

오늘도 감사합니다.

반응형