개발/알고리즘(코딩테스트)

프로그래머스, 자바스크립트) 배열 만들기 4

빔네모 2024. 2. 25. 00:46

문제

https://school.programmers.co.kr/learn/courses/30/lessons/181918

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

특정 결과가 도출될때까지 어떤 동작을 반복해야 한다 => 반복문!!

조건에 맞게 반복문을 작성해준다.

function solution(arr) {
  let i = 0;
  let stk = [];
  while (i < arr.length) {
    if (stk.length === 0) {
      stk.push(arr[i]);
      i++;
    } else if (stk.length > 0 && stk[stk.length - 1] < arr[i]) {
      stk.push(arr[i]);
      i++;
    } else if (stk.length > 0 && stk[stk.length - 1] >= arr[i]) {
      stk.pop();
    }
  }

  return stk;
}

여기서 중복되는 코드들은 통합해준다.

배열의 길이가 0일때는 위에서 이미 걸리니 아래의 조건에는 배열의 길이가 0 이상인지 확인할 필요가 없다.

그리고 첫번째 조건문과 두번째 조건문의 코드가 중복되니 하나로 합쳐준다.

function solution(arr) {
  let i = 0;
  let stk = [];
  while (i < arr.length) {
    if (stk.length === 0 || stk[stk.length - 1] < arr[i]) {
      stk.push(arr[i]);
      i++;
    } else if (stk[stk.length - 1] >= arr[i]) {
      stk.pop();
    }
  }

  return stk;
}