[프로그래머스] 짝지어 제거하기
2023. 1. 31. 16:31ㆍ기록/Programmers
- 목차
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 문제 풀이
function solution(s) {
const stack = [];
for (let i = 0; i < s.length; i++) {
if (stack[stack.length - 1] === s[i]) {
stack.pop();
} else {
stack.push(s[i]);
}
}
return stack.length === 0 ? 1 : 0;
}
- 0부터 주어진 문자열 s의 길이보다 작을때 까지 1씩 증가하며 반복함
- stack 배열의 마지막 요소가 현재 순회 요소와 동일할 경우
- stack 배열의 마지막 요소를 제거함 (같은 문자를 짝지어 제거함)
- 동일하지 않을 경우
- stack 배열의 끝에 현재 순회 요소를 넣음 (다음 순회에서 해당 요소를 비교하기 위함)
- stack 배열의 길이가 0일 경우 모든 문자를 짝지어 제거한 것이므로 1을 리턴함
- 0이 아닐 경우 배열에 짝지으지 못한 문자가 남아있는 것이므로 0을 리턴함
다른 사람의 문제 풀이
const solution = (s) => {
if (s.length % 2 != 0) return 0;
const stack = [];
for (let i = 0; i < s.length; i++) {
const b = s.charAt(i);
if (stack[stack.length - 1] === b) {
stack.pop();
} else {
stack.push(b);
}
}
return stack.length > 0 ? 0 : 1;
};