[프로그래머스 코딩테스트] 올바른 괄호

이희주·2022년 8월 31일
0
post-thumbnail

문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

"()()" 또는 "(())()" 는 올바른 괄호입니다.
")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항
문자열 s의 길이 : 100,000 이하의 자연수
문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예

sanswer
"()()"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
}

통과되었따 !

profile
어제보다 오늘 발전하는 프론트엔드 개발자

0개의 댓글