https://www.acmicpc.net/problem/20116
코드
n, l = map(int, input().split())
x = list(map(int, input().split()))
center = x[-1] # 무게 중심
num = 1
for i in range(n-2, -1, -1):
if center <= (x[i]-l) or center >= (x[i]+l):
print("unstable")
exit()
center = ((center*num)+x[i])/(num+1) # 위에서부터 i번째까지의 무게 중심
num += 1 # i번째까지 상자 개수
print("stable")
i번째보다 높은 상자들의 무게 중심이 i번째 상자 안에 있는지 판별해야 하므로 위에서부터 내려와야 한다. 우선 가장 맨 위의 상자의 무게 중심의 x좌표를 center라는 변수에 저장해놓고 n-2번째 상자부터 0번 상자까지 내려오며 위 상자까지 누적된 상자들의 무게 중심이 현재 상자의 범위 내에 있는지 판별해야 한다. 물론 내려갈 때마다 상자들의 누적 무게 중심은 업데이트해줘야 한다.
'문제풀이 > 누적합' 카테고리의 다른 글
[Javascript/자바스크립트] 백준 10751번 COW (0) | 2024.07.12 |
---|---|
[Python/파이썬] 백준 5549번 행성 탐사 (0) | 2024.06.08 |
[Python/파이썬] 백준 2876번 그래픽스 퀴즈 (0) | 2024.04.30 |
[Python/파이썬] 백준 10211번 Maximum Subarray (0) | 2024.03.01 |
[Python/파이썬] 백준 20002번 사과나무 (0) | 2024.02.23 |