BOJ

BOJ 17608번 막대기

이도울 2022. 1. 13. 20:22
SMALL

1. 문제링크

 

17608번: 막대기

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

www.acmicpc.net

2. 문제 이해

우선 제일 오른쪽 막대의 길이를 기준으로 왼쪽 처음까지 배열을 돌며 비교해야겠다는 생각이 든다. 그래서 만약에 제일 왼쪽 막대보다 길이가 길면 전체 카운트에 +1을 해주면 될 것 같다. 보니까 자료구조 스택 문제네... 제일 마지막에 있는 요소를 차례로 빼가면서 비교하고, 만약에 제일 큰 요소보다 큰 새로운 요소라면 카운트를 해주고 제일 높은 막대기로 변경시켜주면 된다.

 

3. 문제 풀이

# 임의의 개수의 정수를 n줄을 입력받아서 리스트에 저장해야하므로 sys를 불러온다.
import sys
input = sys.stdin.readline
N = int(input())

arr = [int(input()) for _ in range(N)]

cnt = 0
top = 0
while arr:
    # arr 마지막 요소 하나를 뽑는다.
    stick = arr.pop()
    if stick > top:
        top = stick # 현 시점 제일 높은 막대기로 변경
        cnt += 1
print(cnt)

 

 

 

 

 

 

LIST

'BOJ' 카테고리의 다른 글

BOJ 1157번 단어공부 파이썬  (0) 2022.03.17
백준 9012번 괄호 자바 풀이  (0) 2022.01.19
백준 2884번 알람시계 파이썬  (0) 2022.01.13
BOJ 1110번 더하기 사이클 파이썬  (0) 2022.01.12
BOJ 1157 단어공부 파이썬  (0) 2022.01.12