프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
0과 1로만 이루어진 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk을 만드려고 합니다. i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복합니다. 만약 stk이 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다. stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같으면 stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다. stk에 원소가 있는데 stk의 마지막 원소가 arr[i]와 다르면 stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다. 위 작업을 마친 후 만들어진 stk을 return 하는 solution 함수를 완성해 주세요. 단, 만약 빈 배열을 return 해야한다면 [-1]을 return 합니다.
입출력 예
arr | result |
[0,1,1,1,0] | [0,1,0] |
코드
const solution = (arr) => {
let stk = [];
let i = 0;
while (i < arr.length) {
if (stk.length === 0) {
stk.push(arr[i]);
i++;
} else if (stk[stk.length - 1] === arr[i]) {
stk.pop();
i++;
} else {
stk.push(arr[i]);
i++;
}
}
return stk.length === 0 ? [-1] : stk;
}
설명
while 문을 사용하여 i가 arr가 클 때까지 반복합니다. 만약에 stk 길이가 0이라면 stk 배열에 arr[i]의 값을 추가하고 i가 1씩 증가합니다. stk의 마지막 원소가 arr[i]가 같으면 마지막 원소를 뽑고 1씩 증가합니다. 마지막으로 위에 있는 조건들을 적합하지 않을 때 stk에 arr[i]을 넣어주고 i가 1씩 증가합니다. stk의 길이가 0이라면 [-1]을 반환하고 아니라면 stk 값을 반환합니다.
'자바스크립트' 카테고리의 다른 글
[JavaScript] 프로그래머스 배열의 길이를 2의 거듭제곱으로 만들기 (0) | 2024.10.15 |
---|---|
[JavaScript] 프로그래머스 무작위로 K개의 수 뽑기 (0) | 2024.10.15 |
[JavaScript] 프로그래머스 빈 배열에 추가, 삭제하기 (0) | 2024.10.11 |
[JavaScript] 프로그래머스 문자열이 몇번 등장하는지 세기 (0) | 2024.10.10 |
[JavaScript] 프로그래머스 특정 문자열로 끝나는 긴 부분 문자열 찾기 (0) | 2024.10.10 |