문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한사항
문자열 s의 길이 : 100,000 이하의 자연수
문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
s answer "()()" true "(())()" true ")()(" false "(()(" false 입출력 예 설명
입출력 예 #1,2,3,4
문제의 예시와 같습니다.
예전에 풀었던 문제인데, 스택을 사용해서 다시 풀어보기로 했다!
function solution(s){
let arr = []
for(let i of s) {
if(i === "(") arr.push("(")
if(i === ")") arr.pop()
}
return arr.length === 0
}
맞았을거라고 생각했는데 테스트케이스 돌려보니 2개가 오류..!
프로그래머스는 항상 생각하지만 테스트케이스가 안떠서 뭐가 틀렸는지 알 수 가 없따는 점이 넘나 슬픈..
천천히 생각해보니까 "("가 push 되지 않아서 arr가 빈값일 수 도 있다는 생각이 들었따
그래서 arr가 빈값일 경우 리턴시켜버리는 코드를 작성
function solution(s){
let arr = []
for(let i of s) {
if(i === "(") arr.push("(")
if(i === ")") {
if(arr.length === 0) return false
arr.pop()
}
}
return arr.length === 0
}
통과되었따 !