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
- NPM
- stack문제
- 자바스크립트
- react
- 자바스크립트 문제풀이
- 자바스크립트 문제
- 프로그래머스
- 자바스크립트 문제 풀이
- 프론트엔드
- 리액트
- til
- 제로베이스
- 자바스크립트 알고리즘 문제
- 알고리즘문제풀이
- 타입스크립트
- HTML
- Next.js13
- Baekjoon
- 자바스크립트코딩테스트
- Next
- 자바스크립트 연결리스트
- leetcode
- 자바스크립트 알고리즘
- lodash
- next13
- leetcode문제풀이
- JS
- CSS
- JavaScript
- 리액트쿼리
Archives
- Today
- Total
코드노트
leetcode 자바스크립트 문제 풀이 Valid Parentheses 유효한 괄호 본문
Valid Parentheses 유효한 괄호
더보기
문제설명
'(', ')', '{', '}', '[' 및 ']' 문자만 포함하는 문자열이 주어지면 입력 문자열이 유효한지 확인합니다.
다음과 같은 경우 입력 문자열이 유효합니다.
열린 브래킷은 동일한 유형의 브래킷으로 닫아야 합니다.
열린 브래킷은 올바른 순서로 닫아야 합니다.
모든 닫기 대괄호에는 동일한 유형의 해당 여는 대괄호가 있습니다.
- 이번 문제는 stack을 활용하는 문제이다.
- 간단하게 말하면 입력값을 넣어놓고 입력값에 맞는 값들을 빼면서 length를 0으로 만들어내면 된다.
var isValid = function (s) {
const stack = [];
for (let i = 0; i < s.length; i++) {
if (s[i] === "{" || s[i] === "[" || s[i] === "(") {
stack.push(s[i]);
} else {
const lastChar = stack.pop();
if (
(s[i] === "}" && lastChar !== "{") ||
(s[i] === "]" && lastChar !== "[") ||
(s[i] === ")" && lastChar !== "(")
) {
return false;
}
}
}
return stack.length === 0;
};
- 문자의 length만큼 반복문을 돌리면서 괄호들과 같으면 stack 배열에 넣어준다.
그게 아니면 lastChar변수에 담아준다.
- 그리고 들어오는 값들이 닫히는 값인지 확인하여 맞으면 빼준다.
*다른문자일수도 있기 때문에 조건에서 두가지를 확인해줘야한다.
- 마지막으로 length 값이 0이면 true를 반환한다.
다른사람풀이를 보면 배열에 넣어주고 괄호를 포함하고 있는지를 비교하기도 하였다.
나는 그냥 배열을 만들지 않고 직관적으로 문제를 풀어보았다.
'Code note > 자바스크립트 알고리즘 문제풀이' 카테고리의 다른 글
원형 연결리스트 알고리즘 문제 풀이 (0) | 2022.09.14 |
---|---|
연결리스트 역순 출력, 반대로 연결 이해하기, 자바스크립 (0) | 2022.09.13 |
자바스크립트 연결리스트 열차연결 문제풀이 (0) | 2022.09.09 |
자바스크립트 접두사 구하기 문제풀이 (0) | 2022.09.08 |
자바스크립트 로마숫자 코딩테스트 문제 풀이 Roman to Integer (0) | 2022.09.08 |