본문으로 바로가기

[백준] 1912번 연속합

category 알고리즘/동적계획법 2019. 1. 26. 03:58


사실 이걸 올려야하나 말아야하나 고민 많이했는데.. 구하는 방법이라도 알 수 있으니 그냥 올렸다.

dp보다는 변수2개로 둬서 구했는데.. dp로 구해도 되긴 된다..


원리는

now와 max를 두고

arr[2]번째부터 now에 계속 더해주는 것이다. (2번째부터 도는 이유는 첫번째는 무조건 자기 자신이 최대값이기 때문)

그리고 더해준 now 와 max를 비교해 둘 중 더 큰값을 MAX 값으로 두면 된다.

그리고 now가 더해져 가면서 만약 0보다 작아진다면? 그땐 now를 0으로 (초기화) 시켜주면 된다.


왜냐면 now가 -가 된다면 최대값이 될 수 없다.

예외가 있다면 음수들만 arr에 들어온다는 것인데

그런 경우엔 arr 중에서 가장 작은 값이 최대 값이다.

예를 들어 arr에 5개의 숫자가 들어있고 -1,-2,-3,-4,-5 라면 , 아무리 더해도 -1보다 커질 수는 없다 

그러므로 최대값은 -1인 것이다.

dp도 이런 방식으로 짜면 된다.. 점화식은.... 위에서 다 설명했읍니다.....


<풀이소스>


아 그리고 동적할당으로 arr를 잡았는데, 사실 저것도 필요없이 변수 하나만 추가하면 된다..

반복문을 돌면서 입력, 계산, 대소비교 다 하고 있기 때문에

arr에다가 값을 입력받을 필요는 없다...





'알고리즘 > 동적계획법' 카테고리의 다른 글

동적계획법의 기초  (0) 2019.08.31
[백준] 2156번 포도주 시식  (0) 2019.01.29
[백준] 1932번 정수 삼각형  (0) 2019.01.26
[백준] 1149번 RGB거리  (0) 2019.01.25
[백준] 11727번 2 x n 타일링 2  (0) 2019.01.24