KUKJIN LEE's profile picture

KUKJIN LEE

Posted time

posted 1 week ago

프로그래머스 배열 만들기 4 문제 풀이

function solution(arr) {
    let stk = [];
    let i = 0;

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

    return stk;
}
항목설명
학습 포인트스택 사용법, 조건문 조합, 루프 흐름 제어
주요 개념스택의 top과 현재 값을 비교해서 조건 만족 시 push, 아니면 pop
현실 적용 예시주식 가격 분석, 증가/감소 추세 판단, 범위 내 조건 추출

✅ 1. 스택(Stack) 자료구조 사용법

  • 스택은 "마지막에 넣은 값을 먼저 꺼낸다"는 구조(LIFO, Last-In First-Out)를 가지고 있어요.

  • pushpop이라는 메서드를 통해 값을 넣고 뺍니다.

  • 이 문제에서는 스택을 사용해서 조건에 따라 값을 유지하거나 제거하는 로직을 구현합니다.

✅ 2. 조건에 따라 스택을 구성하는 로직

  • 현재 배열의 요소 arr[i]를 스택의 가장 위에 있는 값(stk[stk.length - 1])과 비교합니다.

  • 스택이 비었거나, 스택의 top 값보다 크면 push

  • 그렇지 않으면 pop — 즉, 현재 값보다 작은 값들만 남기겠다는 구조입니다.

 

if (stk.length === 0 || stk[stk.length - 1] < arr[i]) {
    stk.push(arr[i]);
    i++;
} else {
    stk.pop();
}
  • 조건 1: 스택이 비어 있으면 그냥 넣는다 (비교 대상이 없기 때문)

  • 조건 2: 스택의 마지막 값이 현재 값보다 작으면 넣는다 (증가하는 흐름 유지)

  • 그 외: 스택의 값이 현재 값보다 크면 빼고 다시 비교한다

New Tech Posts