CodingTest/Baekjoon

[baekjoon] 백준 17608번(파이썬): 막대기

JunJangE 2021. 10. 19. 01:32

문제

 

17608번: 막대기

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

www.acmicpc.net

알고리즘

- 맨 뒤에 있는 막대기를 제일 높은 막대기로 초기화한다.

- 반복문을 통해 막대기의 높이를 확인한다. 

- 제일 높은 막대기보다 현재 막대기의 높이가 크면 제일 높은 막대기를 현재 막대기로 초기화해준다.

- 제일 높은 막대기가 바뀔때마다 카운트한다.(처음에 맨 뒤에 있는 막대기를 제일 높은 막대기를 초기화했기 때문에 카운트를 1로 초기화)

코드

import sys

n = int(sys.stdin.readline())
stack = [int(sys.stdin.readline()) for _ in range(n)]
top = stack.pop() # 제일 높은 막대기
cnt = 1 # 보이는 막대기의 수

# 반복문을 통해 막대기의 높이를 확인
for i in range(1, n):
    now = stack.pop() # 현재 막대기의 높이

    # 현재 막대기가 제일 높은 막대기보다 높으면
    if now > top:
        cnt += 1 # 카운트
        top = now # 제일 높은 막대기를 현재 막대기로 초기화

# 보이는 막대기의 수 출력
print(cnt)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com