2374번 - 같은 수로 만들기
수는 증가구간(같은수포함 감소만아니면 증가구간)과 감소구간을 갖는다.
증가구간의 시작점과 끝점이 있다고 했을때, 증가구간의 시작점과 증가구간의 끝의 차이를 메꾸어주면 모두 같은수로 만들어진다.
감소구간은 감소의 끝점이 증가구간의 시작점이된다.
증가구간으로 시작할 경우는, 미리 저장해둔 arr[0]이 min이된다.
감소구간으로 시작할 경우는 미리 저장해둔 arr[0]이 max가된다.
모두 평평한 구간으로 만들다보면 항상 내림차순의 계단구조가된다. ( * 첫 시작이 감소구간일경우 첫 감소구간만 계단 대신 감소구간)
모든 수를 탐색하였을 때 증가구간으로 끝난다면, 해당 구간을 채우고, 가장 높은구간과 현재 자신의 고점을 비교하여 자신이 고점이면
정답, 차이가 있다면 그 차이만큼을 계산해준다.
감소구간으로 끝난다면, 현재의 마지막 요소가 가장 작은 수이기때문에, 최고점과의 차이를 정답에 더해준다.
이 논리로 정답코드랑 같이 예시를 돌려봐도 대부분 동일한 결과가 나오는데 오답처리를 받아서 궁금합니다.
댓글을 작성하려면 로그인해야 합니다.
seung0916 2년 전
수는 증가구간(같은수포함 감소만아니면 증가구간)과 감소구간을 갖는다.
증가구간의 시작점과 끝점이 있다고 했을때, 증가구간의 시작점과 증가구간의 끝의 차이를 메꾸어주면 모두 같은수로 만들어진다.
감소구간은 감소의 끝점이 증가구간의 시작점이된다.
증가구간으로 시작할 경우는, 미리 저장해둔 arr[0]이 min이된다.
감소구간으로 시작할 경우는 미리 저장해둔 arr[0]이 max가된다.
모두 평평한 구간으로 만들다보면 항상 내림차순의 계단구조가된다. ( * 첫 시작이 감소구간일경우 첫 감소구간만 계단 대신 감소구간)
모든 수를 탐색하였을 때 증가구간으로 끝난다면, 해당 구간을 채우고, 가장 높은구간과 현재 자신의 고점을 비교하여 자신이 고점이면
정답, 차이가 있다면 그 차이만큼을 계산해준다.
감소구간으로 끝난다면, 현재의 마지막 요소가 가장 작은 수이기때문에, 최고점과의 차이를 정답에 더해준다.
이 논리로 정답코드랑 같이 예시를 돌려봐도 대부분 동일한 결과가 나오는데 오답처리를 받아서 궁금합니다.