본문 바로가기
Computer Science/알고리즘

leetcode 941) Valid Mountain Array

by eeeun:) 2022. 1. 25.
반응형

LV. Easy 😎

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

 

Valid Mountain Array - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

 

문제

Given an array of integers arr, return true if and only if it is a valid mountain array.

Recall that arr is a mountain array if and only if:

  • arr.length >= 3
  • There exists some i with 0 < i < arr.length - 1 such that:
    • arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
    • arr[i] > arr[i + 1] > ... > arr[arr.length - 1]

 

Example 1:

Input: arr = [2,1]
Output: false

Example 2:

Input: arr = [3,5,5]
Output: false

Example 3:

Input: arr = [0,3,2,1]
Output: true

 

Constraints:

  • 1 <= arr.length <= 10^4
  • 0 <= arr[i] <= 10^4

 

문제 해결법

bool flag를 두어 false면 increase 구간이고, true이면 decrease 구간을 확인했다.

increase 구간에서 arr[i - 1] > arr[i] 값이면 decrease 구간으로 전환시켜줬다.

만약 i = 1인 경우에 decrease 구간으로 전환되면 increase 구간은 아예 없는 것이기에 return false

 

decrease 구간에서 arr[i - 1] < arr[i] 이 값이 나오면 return false

 

increase 구간, decrease 구간 둘 다 arr[i - 1] = arr[i] 이면 return false 해줬다.

 

해결 코드
class Solution {
public:
	bool validMountainArray(vector<int>& arr) {
		// false : increase, true : decrease
		bool flag = false;
		int size = arr.size();
		if (size < 3)
			return false;

		for (int i = 1; i < size; ++i) {
			if (flag == false) {
				if (arr[i - 1] > arr[i] && i == 1)
					return false;
				else if (arr[i - 1] > arr[i])
					flag = true;
			}
			else {
				if (arr[i - 1] < arr[i])
					return false;
			}
			if (arr[i - 1] == arr[i])
				return false;
		}
		return flag;
	}
};

728x90

댓글