📌강의 정리
문자열 내의 괄호안의 문자들을 전부 제거하는 문제였다.
for문을 돌리며 문자들을 계속 스택에 쌓다가 “)”를 만나면 “(”까지의 모든 스택에 쌓인
모든 문자들을 pop해준다.
📌느낀점
이번에는 복잡도로만 따지면 내 풀이가 조금 더 괜찮지 않나? 하는 생각도 살짝 들기는 한다.
스택에 와서는 알고리즘 실력이 조금 늘어서인지 아직 여유가 있는 것 같다. 좋다.
//나의 코드
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer = "";
let stack = [];
for (let x of s) {
if (stack.length === 0 && x !== "(") answer += x;
if (x === "(") stack.push(x);
else if (x === ")") stack.pop();
}
return answer;
}
// 스택을 만들어서 "("가 나오면
// 그걸 스택에 쌓고 ")"가 나오기 전까지의
// 문자들은 계속 없애준다.
// "("가 스택에 쌓인만큼 ")"가 나와서 스택이 비어있을경우
// 문자들을 출력한다.
let str = "(A(BC)D)EF(G(H)(IJ)K)LM(N)";
console.log(solution(str));
</script>
</body>
</html>
//강사님 코드
<html>
<head>
<meta charset="UTF-8" />
<title>출력결과</title>
</head>
<body>
<script>
function solution(s) {
let answer;
let stack = [];
for (let x of s) {
if (x === ")") {
while (stack.pop() !== "(");
} else stack.push(x);
}
answer = stack.join("");
return answer;
}
let str = "(A(BC)D)EF(G(H)(IJ)K)LM(N)";
console.log(solution(str));
</script>
</body>
</html>
'JS 알고리즘 문제풀이 > 섹션 6. 자료구조(스택, 큐)' 카테고리의 다른 글
6.공주구하기(큐) (0) | 2022.06.27 |
---|---|
5.쇠막대기(스택) (0) | 2022.06.26 |
4.후위식 (postfix) 연산(스택) (0) | 2022.06.25 |
3.크레인 인형뽑기(스택):카카오 (0) | 2022.06.24 |
1.올바른 괄호(스택) (0) | 2022.06.22 |