Boj 2879) 코딩은 예쁘게
문제
설명
목표 인덱스 까지의 차의 부호에 따라 1/0/-1
로 나타내보자. 이때 나타날 수 있는 ...xxx1110001111xxx...
이런 모양은 한번에 처리할 수 없고 부호가 연속된 영역만을 처리하면 두번만에 가능하므로 이것이 최선이다. 그래서 그리디한 전략은 쉽게 떠올릴 수 있다.
제약사항이 작기 때문에 이걸 한번에 하나씩 값을 줄여나가는 구현 방식으로 풀 수도 있다. 하지만 여기서 한번만 더 생각을 해보자. 영역을 둘로 나뉜다는 것은 인덱스의 차를 그래프로 나타낼 때 봉우리가 두번 나타난다는 것이다. 나뉜 봉우리에서도 마찬가지로 적용이 된다. 여기서 문제의 답이 인덱스의 차를 표현한 그래프의 길이의 절반이라는 것을 떠올릴 수 있다.
시간 복잡도
O(\(\mathrm{N}\))
댓글남기기