s가 유효한 표현인지 아닌지 true/false로 반환해주세요. 종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다. 한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다. 괄호 순서가 맞아야 한다.
s = "()"
return true
s = "()[]{}"
return true
s = "(]"
return false
s = "([)]"
return false
s = "{[]}"
return true
function isValid(s) {
let arr = s.split('');
for (let i = 0; i < arr.length; i++) {
if(arr.length % 2 === 1){
return false;
}else{
if((arr[i]==='(' && arr[i+1] ===')')||
(arr[i]==='{' && arr[i+1] ==='}')||
(arr[i]==='[' && arr[i+1] ===']')){
arr.slice(i,1);
i--;
return true;
}
}
}
if(arr.length === 0){
return true;
}else{
return false;
}
}
- string으로 받은 인자를 배열로 가져온다.
- 괄호는 무조건 쌍으로 존재해야 하므로 배열의 길이가 홀수이면 false를 리턴한다.
- 열려있는 괄호가 나오면 바로 닫히는 괄호가 나오는 경우 참이므로 배열에서 잘라낸다.
- 잘라내다가 배열의 길이가 0이면 true를 아닐 경우 false를 리턴한다.
replit test를 통과한 적은 처음이다. 이게 효율적인 코드이든 아니든 초록색 불이 들어온 건 역시 나에게 아주 큰 성취감을 준다. 이렇게 하나씩 실력이 쌓이는 거겠지?라고 위안을 삼아본다.