250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 렌더링 최적화
- 웹 크롤링
- Js module
- 항해99 미니프로젝트
- 테스트 코드 툴 비교
- jwt
- gql restapi 차이
- 리액트
- chromatic error
- 리덕스
- 리액트 메모이제이션
- 코어자바스크립트
- FP 특징
- 실행컨텍스트
- js배열 알고리즘
- 리액트 메모
- JS module system
- this
- 자바스크립트 엔진 v8
- 항해99 부트캠프
- next js
- 함수형 프로그래밍 특징
- 항해99 사전스터디
- 리액트 렌더링 최적화
- toggle-btn
- 타입스크립트
- 항해99
- v8 원리
- 웹팩 기본개념
- 알고리즘
Archives
- Today
- Total
Jaeilit
스택구조 본문
728x90
https://leetcode.com/problems/valid-parentheses/
괄호의 짝이 맞다면 true 아니면 false 를 리턴하는 문제
split(").sort() 를 이용해서 배열로 바꾼 뒤 순서대로 나열해서 하나하나 탐색해서 풀어보려고 했지만 실패함
힌트를 보니까 스택구조로 풀어라는 말이 나와있었다.
스택구조란
push 와 pop 을 이용해서 배열의 마지막 단에 추가/삭제 하는 방법
반대로 큐는 push 와 shift()를 이용해서 마지막에 하나씩 끼워넣더라도 shift() 로 맨 앞단을 (배열 0번째) 날려주는 방법
해결방법)
1. 괄호를 key 와 value 한 쌍으로 객체를 만들어줌
const obj = {
"(" : ")",
"[": "]",
"{": "}"
}
2. stack 이라는 빈 배열을 만들어주고 for of 문으로 객체의 key 들을 순회
const stack = []
for(let key of 입력){
}
3. 스택구조
3-1 for of 문 안에서 obj[key] 값이 있으면 key 를 스택에 넣어준다. ex) "("
3-2 stack 의 마지막 번째가 (lenght-1 을 해도 되고 pop으로 표현해도 됨) key와 다르다면 false 같다면 제거해줌
3-3 stack 구조가 for 문을 돌고나서 stack의 길이가 남아있으면 짝이 맞지 않으므로 false 길이가 남아있지않다면 true 를 반환
if(obj[key]){
stack.push(key)
}else {
const pop = stack.pop()
if(key !== obj[pop]){
return false
}
}
}
728x90