July 17, 2023
N개의 문자로 구성된 문자열 S가 다음과 같은 경우 올바르게 중첩된 문자열이라고 합니다:
S가 비어 있는 경우;
예를 들어 문자열 ”( ( ( ) ( ( ) ) ( ) )“는 올바르게 중첩되지만 문자열 ”( ) )“는 중첩되지 않습니다.
함수를 작성합니다:
function solution(S);이 함수는 N개의 문자로 구성된 문자열 S가 주어졌을 때 문자열 S가 올바르게 중첩되면 1을 반환하고 그렇지 않으면 0을 반환합니다.
예를 들어 S = ”( ( ( ) ( ( ) ) ( ( ) )“이 주어지면 위에서 설명한 대로 함수는 1을 반환해야 하고, S = ”( ) )“이 주어지면 함수는 0을 반환해야 합니다.
다음 가정에 대한 효율적인 알고리즘을 작성합니다:
스택구조를 이용하여 접근
function solution(S) {
const stack = [];
for (let i = 0; i < S.length; i++) {
const char = S[i];
if (char === "(") {
stack.push(char);
continue;
}
const lastChar = stack[stack.length - 1];
if (char === ")" && lastChar === "(") {
stack.pop();
} else {
return 0;
}
}
const isEmpty = stack.length === 0;
return isEmpty ? 1 : 0;
}