
스택은 "쌓아놓은 더미"라는 뜻으로 쌓여있던 접시, 쌓여 있는 상자가 스택에 해당이 되며 "프링글스"과자가 스택의 대표적인 예시이다. LIFO(Last-In First-Out)으로 가장 최근에 들어온 데이터가 가장 먼저 나간다는 의미이다. LIFO의 경우 핸드폰의 뒤로가기나 흔히 우리가 문서나 코딩 작업을 할 때 Ctrl+Z같이 데이터를 되돌릴 때 이 스택 자료구조를 이용한다.
보통 배열을 통해 많이 구현하며, Array.push(),Array.pop()을 이용해서 삽입과 추출을 구현할 수가 있다.
let arr = []
for(let i = 1 ; i <= 3 ; i++){
arr.push(i)
}
arr.pop() // 3;
arr.push(4)
console.log(arr) // [1,2,4]

괄호가 바르게 짝지어졌는지 확인하여 boolean값으로 return 하시오.
| s | answer |
|---|---|
| "(())()" | true |
| "(()(" | false |
function solution(s){
var answer = true;
let left = 0
// 1
if(s[0] === ')') return false
// 2
for(let i = 0 ; i < s.length; i++){
if(s [i] === '(') left+=1
else left -= 1
if(left < 0) return false
}
// 3
if(left !== 0) return false
return answer;
}
')'인 경우 맞지 않기 때문에 false값을 리턴한다.'(' 인 경우 left값을 1씩 더해주고, ')'인 경우 1씩 빼준다. 만일 left의 값이 음수인 경우 짝이 맞지 않기 때문에 false를 리턴해준다.left의 값이 0이 아닌 경우에는 제대로 잘 닫히지 않는 괄호가 남았기 때문에 false가 된다.