문제
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
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1323번(파이썬): 숫자 연결하기 (0) | 2021.10.20 |
---|---|
[baekjoon] 백준 17219번(파이썬): 비밀번호 찾기 (0) | 2021.10.20 |
[baekjoon] 백준 1043번(파이썬): 거짓말 (0) | 2021.10.18 |
[baekjoon] 백준 2075번(파이썬): N번째 큰 수 (0) | 2021.10.17 |
[baekjoon] 백준 1525번(파이썬): 퍼즐 (0) | 2021.10.16 |