개발/알고리즘(코딩테스트)
프로그래머스, 자바스크립트) 배열 만들기 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;
}