728x90
반응형
https://www.acmicpc.net/problem/17608
17608번: 막대기
아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로
www.acmicpc.net
import sys #sys 모듈 호출
n = int(sys.stdin.readline())
arr = [0 for _ in range(n)]
for i in range(n):
arr[i] = int(sys.stdin.readline()) #배열 입력
ans = arr.pop() # 가장오른쪽에 있는 막대기 pop
cnt = 1 #가장 오른쪽 막대기는 무조건 보이기때문에 cnt 초기값은 1
while arr:
t = arr.pop()
if t > ans: #pop 된 값이 지금 까지 나온 값중 가장 큰 값보다 크다면 실행
ans = t #ans를 최대값으로 대치
cnt = cnt + 1 #cnt 개수 1증가
print(cnt)
오른쪽을 시작점으로 설정했을 때 자신보다 앞에 자기보다 큰 막대기가 있을 경우 오른쪽 끝에서 봤을 때 절대 안 보인다는 것만 숙지하고 풀면 될 것 같다.
728x90
반응형
'Algorithm & Data Structure' 카테고리의 다른 글
백준 - 2493번(스택) (0) | 2022.03.31 |
---|---|
백준 - 10828번(스택) (0) | 2022.03.31 |
백준 - 1012번(DFS,BFS 문제지만 완전 탐색으로 품) (0) | 2022.02.23 |
백준 - 2667번(DFS,BFS 문제지만 완전탐색으로 품) (0) | 2022.02.23 |
백준 - 1260번(DFS,BFS) (0) | 2022.02.22 |