원래 정석은 스택

재귀 함수로 해결했다.

() 하나의 완성된 괄호를 계속해서 제거해 나가다 모두 제거되면 참 아니면 거짓 리턴 하도록

스택으로 다시 해결해보기

using System;
using System.Collections.Generic;
using System.Linq;

public class Solution {
    
    public bool checklist(List<char> list){
        int i = 0;
        
        bool check = false;
        
        if(list.Count == 1)
            return false;
        
        while(i<list.Count-1){
            
            if(list[i] == '(' && list[i+1] == ')'){
                list.RemoveAt(i+1);
                list.RemoveAt(i);
                check = true;
            }
            i++;
        }
        
        if(check == false)
            return false;
        
        if(list.Count == 0)
           return true;
        else 
           return checklist(list);
    }
    
    public bool solution(string s) {
        bool answer = true;
        
        char[] arr = s.ToCharArray();
        List<char> list = new List<char>();
        
        list.AddRange(s);
        
        //checklist(list);
        
        //계속해서 ()가 붙어있는 경우를 제거해서 0이된다면 true
        //아니면 false
        
        
        
        
        return checklist(list);
    }
}

stack과 javascript로 다시 풀기

이번엔 괄호가 소 중 대 모두 포함

// 지시사항을 참고하여 solution 함수 안에 코드를 작성하세요. 
function solution(string) {
    var arr = [];
    var str = '';
    var cons_str="(){}[]"
    var cons = ["()", "{}", "[]"];
    for(var i = 0 ; i< string.length; i++){
        var s = string.charAt(i);
        if(cons_str.includes(s)){
            str += s;
            arr.push(s);
            console.log(arr.join());
            if(arr.length >1){
                for(var j = 0; j<cons.length; j++){
                    if(arr[arr.length-2]+arr[arr.length-1] == cons[j])
                        {
                            arr.pop();
                            arr.pop();
                            break;
                        }
                }
                
            }
                
        }
        
    }
    
    if(arr.length == 0){
        return "정상";
    }
    else{
        return "비정상";
    }

}