문제) 자바스크립트 괄호 ‘(‘ 짝이 맞는지 확인. ()) 는 거짓, ()()()는 참, ((())()) 이거도 참.
function is_pair(s){
//결과 초기값 true
var result = true;
//괄호만 넣을 빈 배열 생성
var s_arr =[];
for (var i=0; i<s.length; i++){
//문자열 s 의 ( 만 추출해서 배열에 담는다.
if(s[i]=="("){
s_arr.push(s[i]);
}
else if(s[i]==")") {
//)가 남아있는데 (가 없으므로 false 선언하고 아웃.
if(s_arr.length==0){
return result = false;
}
//문자열 s의 ) 가 나오면 배열에서 (를 제거해서 짝이 맞는지 확인
s_arr.pop();
}
}
//남은 (가 있어도 false
if(s_arr.length!=0){
result = false;
}
return result;
}
이걸 응용하면 ‘(‘ 외에 [], {} 이거도 응용할 수 있다. 자바스크립트 객체를 이용하면 된다.
function is_pair(s){
//결과 초기값 true
var result = true;
//괄호만 넣을 빈 배열 생성
var s_arr =[];
var map = {
'(':')',
'[':']',
'{':'}'
}
for (var i=0; i<s.length; i++){
//문자열 s 의 ( 만 추출해서 배열에 담는다.
if(s[i]==="(" || s[i]==="[" || s[i]==="{"){
s_arr.push(s[i]);
}
else if(s[i]===")" || s[i]==="]" || s[i]==="}") {
//닫는 괄호가 나오면 여는괄호 모아둔데 가장 바깥꺼를 s_key로 담고 지금 s[i] 와 비교
var s_key = s_arr.pop();
if(s[i]!==map[s_key]){
return false;
}
}
}
//남은 (가 있어도 false
if(s_arr.length!==0){
result = false;
}
return result;
}