문제설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
주의사항
- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력예시
코드
function solution(str){
let answer = true;
let stack = [];
if(str[0] === ")") answer =false;
else {
for(let s of str){
if(s === "(") stack.push(s);
else if (s === ")") stack.pop();
}
if(stack.length !==0) answer = false;
}
return answer;
}
해석
1. ")" 이게 먼저나오면 false 를 리턴한다.
2. 그게 아닐 경우 str을 돌면서 "(" 일 경우에는 푸쉬를 해주고, ")"일 경우에는 stack.pop()을 해준다.
(가로의 앞뒤갯수가 맞아야하기 때문에)
3. 반복문이 끝나고 만약 stack의 길이가 0이 아니라면 짝이 맞지 않다는 것이다. 그럼 false;
4. 0이면 true ^^
한줄평
스스로 풀었다. 너무 기분 좋았다. 코드스테이츠의 자료구조 파트를 2번하다보니 뭔가 실력이 상승한 기분이다. 감사합니다.
반응형
'개발 공부 > 알고리즘 개념+문제풀이' 카테고리의 다른 글
[알고리즘] 폰켓몬_프로그래머스 1단계 (0) | 2021.06.20 |
---|---|
[알고리즘] 내적_프로그래머스 1단계 (0) | 2021.06.20 |
[알고리즘 문제풀이] 10부제_기초문제 (0) | 2021.06.19 |
[알고리즘 문제풀이] 삼각형 판별하기 (0) | 2021.06.19 |
[알고리즘 문제풀이] 키패드 누르기 (0) | 2021.06.19 |
댓글