괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.
풀이
function solution(s) {
let answer = "YES";
const stack = [];
for (let x of s) {
if (x === "(") stack.push(x);
else {
if (stack.length === 0) return "NO";
stack.pop();
}
}
if (stack.length > 0) return "NO";
return answer;
}
let a = "(()(()))(()";
console.log(solution(a));
여는 괄호 만나면 stack에 넣고, 닫는 괄호 나오면 pop
아래 상황도 고려해야한다.
- 여는 괄호 더 많은 상황
- 닫는 괄호 더 많은 상황
닫는 괄호의 짝꿍은 스택의 제일 상단에 있는 것이다.
'코딩테스트 문제풀이 > inflearn' 카테고리의 다른 글
[인프런] Node.js / 섹션6-자료구조(스택) / 3. 크레인 인형뽑기(카카오 기출) (0) | 2023.02.10 |
---|---|
[인프런] Node.js / 섹션6-자료구조(스택) / 2. 괄호문자제거 (0) | 2023.02.08 |
[인프런] Node.js / 섹션5-효율성(해시&슬라이싱 윈도우&투포인터 알고리즘) / 8. 모든 아나그램 찾기 (0) | 2023.02.08 |
[인프런] Node.js / 섹션5-효율성(해시 알고리즘) / 7. 아나그램 (0) | 2023.02.08 |
[인프런] Node.js / 섹션5-효율성(해시 알고리즘) / 6. 학급 회장 (0) | 2023.02.08 |