[LeetCode] 941. Valid Mountain Array, Easy

2025. 3. 10. 17:53·CodingTest/LeetCode
반응형

1. 문제

  • 배열 arr이 주어질 때, 다음 조건을 만족하면 true, 아니면 false를 반환.
    • 배열 길이는 3이상이어야 한다.
    • 0번 인덱스부터 특정 인덱스 기준까지 요소의 값이 상승해야 한다.
    • 특정 인덱스 기준부터 요소의 값이 하락해야 한다.

2. 해결

function validMountainArray(arr: number[]): boolean {
    if(arr.length <3) return false;
    if(arr[1] < arr[0]) return false;

    let dir: 'up'|'down' = 'up';
    let isPeached: boolean = false;
    
    for(let i = 0; i< arr.length-1; i++) {
        
        if(dir === 'up') {
            if(arr[i+1] > arr[i]) continue;
            else if(arr[i+1] < arr[i]) {
                dir = 'down';
                isPeached = true;
            } else {
                return false;
            }
        } else {
          if(arr[i+1] < arr[i]){ 
              continue; 
          } else {
              return false;
          }
        }
    }
    
    return isPeached ? true : false;
};
  • 첫 풀이다. 방향을 나타내는 dir과 특정 인덱스에 도달했는지 여부를 변수로 빼고, 배열의 처음 부터 탐색하면서 방향과 인덱스 도달 여부를 업데이트 해준다.
  • 값이 상승하는 중에 하락하거나, 하락 중에 상승하면 false를 반환하고, 그렇지 않으면 특정 인덱스 도달 여부에 따라 true, false를 반환한다.
  • 예외 케이스에 주의해야 한다.
function validMountainArray(arr: number[]): boolean {
    if(arr.length <3) return false;

    let left = 0;
    let right = arr.length - 1;

    while (left < arr.length -1 && arr[left] < arr[left + 1]) left++;

    while (right > 0 && arr[right-1] > arr[right]) right--;

    return left > 0 && right < arr.length - 1 && left === right
};
  • 투 포인터를 이용한 풀이로, 왼쪽과 오른쪽에서 값이 상승하는 여부를 확인하면서 둘이 만났을 때, Valid Mountine이 된다.
  • 처음에 투 포인터를 사용해보려고 했는데, 아직까지 익숙하지 않은 것 같다.
저작자표시 (새창열림)
'CodingTest/LeetCode' 카테고리의 다른 글
  • [LeetCode] 283. Move Zeroes, Easy
  • [LeetCode] 1299. Replace Elements with Greatest Element on Right Side, Easy
  • [LeetCode] 1346. Check If N and Its Double Exist, Easy
  • [LeetCode] 26. Remove Duplicates from Sorted Array, Easy
뜸부깅
뜸부깅
코딩에 대한 여러 개인적인 생각을 정리하고 공부를 하는 공간입니다!!
  • 뜸부깅
    코오오딩
    뜸부깅
  • 전체
    오늘
    어제
    • Note (429)
      • Skill (31)
        • Java & Spring (9)
        • Javascript & HTML & CSS (0)
        • React (0)
        • Next.js (22)
      • CodingTest (389)
        • 백준 온라인 저지(BOJ) (140)
        • 프로그래머스(Programmers) (79)
        • LeetCode (170)
      • Algorithm & Data Structure (6)
      • [Project] 포트폴리오 (3)
        • Front end (3)
        • Back end (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    TypeScript
    백준2751
    Easy
    알고리즘
    백준
    Java
    백준7576
    BOJ
    boj2108
    component-scan
    meidum
    프로그래머스
    백준1260
    medium
    백준1427
    백준7576자바
    boj1427
    자바
    next 14
    leetcode 2236
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
뜸부깅
[LeetCode] 941. Valid Mountain Array, Easy
상단으로

티스토리툴바