포스트

(백준) 막대기

[백준] 막대기

문제

아래 그림처럼 높이만 다르고 (같은 높이의 막대기가 있을 수 있음) 모양이 같은 막대기를 일렬로 세운 후, 왼쪽부터 차례로 번호를 붙인다. 각 막대기의 높이는 그림에서 보인 것처럼 순서대로 6, 9, 7, 6, 4, 6 이다. 일렬로 세워진 막대기를 오른쪽에서 보면 보이는 막대기가 있고 보이지 않는 막대기가 있다. 즉, 지금 보이는 막대기보다 뒤에 있고 높이가 높은 것이 보이게 된다. 예를 들어, 그림과 같은 경우엔 3개(6번, 3번, 2번)의 막대기가 보인다.

N개의 막대기에 대한 높이 정보가 주어질 때, 오른쪽에서 보아서 몇 개가 보이는지를 알아내는 프로그램을 작성하려고 한다.

풀이

1
2
3
4
5
6
7
8
9
10
def solution(sticks: list[int]):
    answer = 0
    max_height = 0
    sticks.reverse()
    for height in sticks:
        if height > max_height:
            max_height = height
            answer += 1
    return answer

막대기가 보이려면 어떻게 해야할까? 내 앞에 있는 최대 크기의 막대기보다 크다면 보일것이다.

순차적으로 순회하면서 최댓값인 막대기보다 큰 녀석들만 카운트를 해준다.

느낀점

아니 너무 간단한데요…?

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.