-
[파이썬] 리트코드 941. Valid Mountain Array 풀이기타/알고리즘 2021. 9. 20. 22:31반응형
https://leetcode.com/problems/valid-mountain-array/
숫자로 이루어진 리스트가 주어졌을 때, 숫자가 mountain array를 이루는지를 판별하는 문제다.
이때의 조건은
1. 숫자가 상승할 때는 계속해서 상승
2. 숫자가 하락할 때는 계속해서 하락
3. 상승과 하락이 모두 존재하며, 상승 다음에는 하락으로 끝나야 한다
라고 생각할 수 있다.
그래서,
1. 인덱스를 처음부터 한 칸씩 이동시키면서
2. 상승을 확인하며 인덱스를 한 칸씩 이동
3. 상승이 없으면 안 되기 때문에 상승한 경우 valid = True로
4. 상승이 존재할 때(valid == True) 하락을 확인하며 인덱스를 한 칸씩 이동
5. 상승과 하락 모두 끝났을 때 인덱스가 마지막칸에 도달한 경우에만 True 반환
이런 순서로 풀었다.
class Solution: def validMountainArray(self, arr: List[int]) -> bool: temp = False valid = False n = len(arr) i = 0 # 올라가는 경우 # 인덱스가 범위 내이고 앞의 숫자가 다음 숫자보다 작음 while i + 1 < n and arr[i] < arr[i+1]: i += 1 valid = True # 올라가는 케이스가 있었는지를 검증 # 내려가는 경우 # 인덱스가 범위 내이고 앞의 숫자가 다음 숫자보다 크고 올라가는 케이스가 존재했음 while i + 1 < n and arr[i] > arr[i+1] and valid == True: i += 1 temp = True # 인덱스 끝까지 돌았는지 확인 if i+1 != n : temp = False return temp
반응형'기타 > 알고리즘' 카테고리의 다른 글
[파이썬] 리트코드 830. Positions of Large Groups 풀이 (0) 2021.09.21 [파이썬] 리트코드 1413. Minimum Value to Get Positive Step by Step Sum 풀이 (0) 2021.09.20 백준 파이썬 1850번 - 최대공약수 (1) 2021.06.27 백준 파이썬 9613번 - GCD 합 (0) 2021.06.27 백준 파이썬 9417번 - 최대GCD (0) 2021.06.27