문제 설명
괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어
- "()()" 또는 "(())()" 는 올바른 괄호입니다.
- ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.
'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.
제한사항- 문자열 s의 길이 : 100,000 이하의 자연수
- 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.
입출력 예
s | answer |
"()()" | true |
"(())()" | true |
")()(" | false |
"(()(" | false |
입출력 예 설명
입출력 예 #1,2,3,4
문제의 예시와 같습니다.
첫 번째 풀이
function solution(s){
const stack =[]
for(let i=0; i<s.length; i++){
let str = s[i]
switch(str){
case '(':
if(stack[stack.length-1] == ')') return false
stack.push(str)
break
case ')':
if(stack[stack.length-1] == '('){
stack.pop()
}else{
return false
}
}
}
if(stack.length ===0){
return true
}else{
return false
}
}
위와 같이 풀이를 하니 아래와 같은 결과가 출력되었습니다.
실행 결과
정확성 테스트
테스트 1 〉 | 통과 (0.06ms, 33.5MB) |
테스트 2 〉 | 통과 (0.05ms, 33.5MB) |
테스트 3 〉 | 통과 (0.05ms, 33.5MB) |
테스트 4 〉 | 통과 (0.07ms, 33.4MB) |
테스트 5 〉 | 통과 (0.06ms, 33.5MB) |
테스트 6 〉 | 통과 (0.08ms, 33.5MB) |
테스트 7 〉 | 통과 (0.08ms, 33.4MB) |
테스트 8 〉 | 통과 (0.06ms, 33.4MB) |
테스트 9 〉 | 통과 (0.15ms, 33.6MB) |
테스트 10 〉 | 통과 (0.05ms, 33.5MB) |
테스트 11 〉 | 통과 (0.06ms, 33.4MB) |
테스트 12 〉 | 통과 (0.17ms, 33.4MB) |
테스트 13 〉 | 통과 (0.25ms, 33.4MB) |
테스트 14 〉 | 통과 (0.17ms, 33.4MB) |
테스트 15 〉 | 통과 (0.14ms, 33.4MB) |
테스트 16 〉 | 통과 (0.23ms, 33.5MB) |
테스트 17 〉 | 통과 (0.16ms, 33.6MB) |
테스트 18 〉 | 통과 (0.16ms, 33.4MB) |
효율성 테스트
테스트 1 〉 | 통과 (6.09ms, 37.7MB) |
테스트 2 〉 | 실패 (시간 초과) |
채점 결과
정확성: 69.5
효율성: 15.2
합계: 84.8 / 100.0
두번 째 풀이
function solution(s){
let answer = 0; // 먼저 answer을 0으로 초기화해줍니다.
for(let i=0; i<s.length; i++){ // 문자열 s를 순회
s[i] === '('? answer+=1 : answer-=1 // s[i]번째 문자열이 '('와 같다면 answer에 1을 더하고 ')'라면 1을 뺍니다.
if(answer <0) return false // 반복문을 도는 와중에 answer이 0보다 작다면 바로 false를 return 합니다.
}
if(answer !==0) return false // 반복문이 종료된 후 answer을 값이 0이 아니라면 '('기호만 추가되서 양수이므로 false를 return해줍니다.
return true
}
'코딩 테스트 풀이 🛠' 카테고리의 다른 글
[Leet Code - eazy] 69. Sqrt(x) (0) | 2023.02.22 |
---|---|
[프로그래머스] 피보나치 수 (0) | 2023.02.22 |
[프로그래머스] 로그인 성공? (0) | 2023.02.22 |
[프로그래머스] 최빈값 구하기 (0) | 2023.02.22 |
[프로그래머스] 외계어 사전 (0) | 2023.02.19 |