728x90
https://www.acmicpc.net/problem/17608
처음 문제를 보고 맨 오른쪽 높이를 설정하고 높이대로 잘라서 위 부분 볼 수 있는 숫자를 출력해야지라고 생각했는데 아니었다. 테스트 케이스는 문제없는데 맞왜틀.. 이러고 있었다.
697946 같은 경우에 오른쪽에서 볼때 가장 오른쪽 6과 높이가 9인 막대기 2개만 보여야 하는데 view = stick[i]을 하지 않으면 979 세개가 cnt에 추가되어서 오답처리를 받는다. 그래서 높이 갱신이 필요하다.
import sys
n = int(sys.stdin.readline())
sticks = [ int(sys.stdin.readline()) for _ in range(n) ] #!
view = sticks[-1] #2
cnt = 1 #3
for i in reversed(range(n)):
if sticks[i] > view: #4
cnt += 1
view = sticks[i] #5
print(cnt)
#1 : 막대기들의 길이 입력
#2 : 가장 오른쪽 막대기의 길이 저장
#3 : 가장 오른쪽 막대기는 바로 보이니까 cnt를 1로 초기화
#4 : 반대로 설정해준 범위에서 막대기의 길이가 view보다 크면
#5 : cnt +1 해주고 view를 갱신
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 12605 파이썬(python) : 단어순서 뒤집기 (0) | 2022.07.22 |
---|---|
[백준] 2841 파이썬(python) : 외계인의 기타 연주 (0) | 2022.07.22 |
[백준] 5397 파이썬(python) : 키로거 - 이중stack (0) | 2022.07.21 |
[백준] 3986 파이썬(python) : 좋은 단어 (0) | 2022.07.21 |
[백준] 1918 파이썬(python) : 후위 표기식 (0) | 2022.07.21 |