Stack을 이용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다.
예를 들어
- "()()" 또는 "(())()"는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예 & 설명
나의 풀이
JavaScript에서의 Stack은 배열로 표현할 수 있습니다.
stack이라는 배열을 스택으로 생각하고, 만약 첫 문자열이 ')'로 시작하면 그 괄호는 올바르지 않기 때문에 바로 false를 반환해 줍니다.
문자열 요소를 순서대로 뽑기 위해 for of문을 사용하고, '('가 존재하면 Stack에 push 해주고, ')'라면 Stack에 pop 해주면 괄호에 맞게 배열이 만들어집니다.
'('로 시작하면 짝지어 ')'가 존재해야 하기 때문에 올바르게 괄호가 들어갔다면 배열은 아무것도 남지 않게 됩니다.
다른 풀이 ✅
전체적인 풀이의 맥락은 "나의 풀이"와 비슷합니다. 그러나 스택을 사용하지 않고 cnt변수를 이용했다는 점이 다른 점입니다.
11번째 줄에서 0보다 작을 경우 즉 cnt가 음수가 될 경우에는 잘못된 괄호이기 때문에 false를 반환해줘야 합니다.
참고 ❗
[JavaScript] 반복문(loop) 정리 for / for in / for of / foreach
JavaScript의 반복문은 특정 작업을 반복적으로 할 때 사용할 수 있는 구문입니다. 가장 전형적인 for문을 시작으로 다양한 종류의 반복문들이 있습니다. 각 반복문마다 장점이 있고, 성능 또한 차
pixx.tistory.com
[자료구조] 스택 stack 알아보기 With JavaScript
스택이란 ❓ 스택은 우리 실생활 속에서도 많이 사용되는 자료구조 중 하나입니다. 예를 들면 웹 브라우저에서의 뒤로 가기, Ctrl+Z (Undo) 등 다양하게 쓰입니다. 스택은 "쌓다"라는 의미를 가
pixx.tistory.com
'Coding Test > 프로그래머스' 카테고리의 다른 글
[SQL] 대장균들의 자식의 수 구하기 (MySQL) (0) | 2024.05.03 |
---|---|
[프로그래머스] 최소직사각형 (JavaScript) (0) | 2024.05.02 |
[프로그래머스] 3진법 뒤집기 (JavaScript) (1) | 2024.04.27 |
[SQL] 조건에 맞는 도서 리스트 출력하기 (ORACLE) (0) | 2024.04.21 |
[프로그래머스] 평행 (JavaScript) (0) | 2024.03.13 |