https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV134DPqAA8CFAYh
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
for idx in range(2, N-2) 내에서, idx를 중심으로 2칸 내외의 건물들의 높이 수집
조망권 세대는 현재 건물(idx)과 2칸 내외([idx-2, idx+2]) 중 가장 큰 건물 차이로 결정됨
이 때, 조망권 세대는 (현재 건물 - 2칸 내외 중 가장 큰 건물)의 차이가 양수일 경우 더하도록 함
for t in range(10) : # 테스트 케이스 10개
N = int(input())
b = list(map(int, input().split()))
ans = 0
for idx in range(2, N-2) :
now = b[idx]
next = [b[idx - 2], b[idx - 1], b[idx + 1], b[idx + 2]]
a = now - max(next)
if a > 0 :
ans += a
print(f'#{t+1} {ans}')
뭔가 알고리즘은 쉬운 느낌이었는데 처음 짠 코드가 제출 케이스 10개 중 9개만 맞아서 고민하는데 시간이 오래걸렸다.
스위핑 알고리즘인듯?
'코테풀이 > SW Expert Academy' 카테고리의 다른 글
| 22979. 문자열 옮기기 (0) | 2025.11.18 |
|---|---|
| 25469. 페인트칠 (0) | 2025.11.18 |
| 25655. 유치원생은 쉽게 푸는 문제 (0) | 2025.11.17 |
| 1954. 달팽이 숫자문제 (0) | 2025.11.17 |
| 2072. 홀수만 더하기 (0) | 2025.11.16 |