프로그래머스 - 짝지어 제거하기 [82]
https://programmers.co.kr/learn/courses/30/lessons/92335
regex를 이용해서 풀고싶었는데 효율성 쪽에서 시간 초과가 났다
이 문제는 O(N)안의 시간 복잡도를 사용해야 하는 문제였다고,.
regex코드
// function solution(s) {
// var answer = -1;
// reg =
// /a{2}|b{2}|c{2}|d{2}|e{2}|f{2}|g{2}|h{2}|i{2}|j{2}|k{2}|l{2}|n{2}|m{2}|o{2}|p{2}|q{2}|r{2}|v{2}|s{2}|t{2}|u{2}|v{2}|w{2}|x{2}|y{2}|z{2}/g;
// // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
// while (s.match(reg) != null) {
// s = s.replace(reg, "");
// if (s.length % 2 == 1) {
// return 0;
// }
// if (s.length == 0) {
// return 1;
// }
// }
// if (s.length == 0) {
// return 1;
// } else {
// return 0;
// }
// console.log(s.match(reg));
// return 0;
// }
찾아본 사항
Array.prototype.pop()
**pop()**메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환
js에서 queue, stack사용하는 법
-
스택 (Stack)
class Stack { constructor() { this._arr = []; } push(item) { this._arr.push(item); } pop() { return this._arr.pop(); } peek() { return this._arr[this._arr.length - 1]; } } const stack = new Stack(); stack.push(1); stack.push(2); stack.push(3); stack.pop(); // 3 -
큐 (Queue)
class Queue { constructor() { this._arr = []; } enqueue(item) { this._arr.push(item); } dequeue() { return this._arr.shift(); } } const queue = new Queue(); queue.enqueue(1); queue.enqueue(2); queue.enqueue(3); queue.dequeue(); // 1 -
https://helloworldjavascript.net/pages/282-data-structures.html
최종 코드
function solution(s) {
var answer = -1;
list = [];
if (s.length % 2 == 1) {
//홀수면 바로 리턴
return 0;
}
for (let i = 0; i < s.length; i++) {
if (s[i] == list[list.length - 1]) {
//pop() 메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환
//같은 문자
list.pop();
} else {
list.push(s[i]);
}
}
console.log(list);
if (list.length == 0) {
return 1;
} else {
return 0;
}
}
s = "baabaa";
s2 = "cdcd";
console.log(solution(s));
console.log(solution(s2));
// document.querySelector("#result").innerHTML = solution(s);