본문 바로가기
알고리즘 문제/Leetcode

[leetcode][941] Valid Mountain Array

by 햄과함께 2018. 11. 25.
320x100

문제 : https://leetcode.com/problems/valid-mountain-array/




배열 A의 크기가 3미만인 것들은 정답이 될 수 없다. (값이 증가하는 범위와 감소하는 범위가 존재하려면 적어도 3개의 값이 필요하므로)

배열의 첫번째 값과 두번째 값을 비교했을 때 증가하지 않는다면 정답이 될 수 없다. (값이 증가하는 범위가 존재하지 않으므로)

위 두 경우를 먼저 체크한다.


이후 배열의 연속된 값 2개를 비교하면서 다음을 체크한다.

1. A[i-1] == A[i] : 값이 같은 경우 -> 정답이 될 수 없다.

2. A[i-1] < A[i] : 값이 증가하는 경우 -> 이전에 값이 감소하는 경우가 나온경우 정답이 될 수 없다.

3. A[i-1] > A[i] : 값이 감소하는 경우 -> 이후부터는 무조건 값이 감소하는 경우만 나와야 한다.


이를 배열에서 모두 탐색하고 난 뒤 무사히 통과한 경우(정답이 될 수 없는 경우가 나오지 않은 경우)가 정답이 될 수 있다.


시간복잡도는 O(N).




소스코드 : https://gist.github.com/fpdjsns/202c786483f921318102ce2c6e8fe8bf

320x100

댓글