백준 17608 - 막대기 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/17608
풀이
여러개의 막대기가 일렬로 세어져 있을 때, 오른쪽에서 보았을때 보이는 막대기의 개수를 구하는 문제이다.
- 막대기는 왼쪽에서 오른쪽으로 나열되어 있으며, 각 막대기의 높이가 주어진다.
- 오른쪽에서 왼쪽을 바라볼 때, 더 높은 막대기가 나오지 전까지의 막대기만 보이게 된다.
for i in range(N - 1, -1, -1): # 오른쪽에서 왼쪽으로 순회
if max_height < H[i]: # 현재 막대기가 기존 최고 높이보다 높으면
max_height = H[i] # 최고 높이 갱신
count += 1 # 보이는 막대기 개수 증가
오른쪽에서 왼쪽으로 막대기 리스트를 탐색한다.
만약 현재 막대기의 높이가 max_height 보다 크다면, 이는 새로운 보이는 막대기 이므로, count를 증가시킨다.
max_height를 현재 막대기의 높이로 갱신한다.
시간 복잡도 분석
- 한번의 순회만 이용하므로 O(N)
코드
# 백준 17608 - 막대기
# 분류 : 구현
import sys
input = sys.stdin.readline
N = int(input())
H = [0] * N
for i in range(N) :
H[i] = int(input())
max_height = 0
count = 0
for i in range(N - 1, -1, -1) :
if max_height < H[i] :
max_height = H[i]
count += 1
print(count)
'Programming > 백준' 카테고리의 다른 글
백준 21756 - 지우개 (파이썬) (0) | 2025.03.23 |
---|---|
백준 19941 - 햄버거 분배 (파이썬) (0) | 2025.03.22 |
백준 17286 - 유미 (파이썬) (0) | 2025.03.20 |
백준 30892 - 상어 (파이썬) (0) | 2025.03.19 |
백준 31825 - 알파벳과 쿼리 (Easy) (0) | 2025.03.18 |
댓글
이 글 공유하기
다른 글
-
백준 21756 - 지우개 (파이썬)
백준 21756 - 지우개 (파이썬)
2025.03.23 -
백준 19941 - 햄버거 분배 (파이썬)
백준 19941 - 햄버거 분배 (파이썬)
2025.03.22 -
백준 17286 - 유미 (파이썬)
백준 17286 - 유미 (파이썬)
2025.03.20 -
백준 30892 - 상어 (파이썬)
백준 30892 - 상어 (파이썬)
2025.03.19