Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- styled-components
- tailwindcss
- 빅오
- isNaN
- NextAuth
- 해쉬
- 블로그만들기
- never타입
- cookie
- 라이프사이클
- nextjs
- 버블정렬
- Algorithm
- react-query
- 알고리즘
- 투포인터
- typscript
- 정렬
- 큐
- js알고리즘
- aws lightsail
- JavaScript
- 슬라이딩윈도우
- 그리디
- 스택
- textarea autosize
- next.js
- react
- TypeScript
- nestjs
Archives
- Today
- Total
far
[JS 알고리즘] 괄호문자제거 (스택) 본문
괄호문자제거
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
입력설명
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력설명
남은 문자만 출력한다.
입력예제
(A(BC)D)EF(G(H)(IJ)K)LM(N)
출력예제
EFLM
// 내가 푼 것
function solution(s){
let answer = "";
let stack = [];
for (let i of s) {
if (i === "(") {
stack.push(i)
} else if (i === ")") {
stack.pop()
} else if (stack.length === 0) {
answer += i
}
}
return answer;
}
let str="(A(BC)D)EF(G(H)(IJ)K)LM(N)";
console.log(solution(str));
for..of안에 if로 분기를 만들어서 괄호가 사라졌을 경우 문자열을 answer에 더해주는 방법으로 풀었다.
// 강의의 풀이
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));
강의에서는 while문을 사용해서 "("가 pop으로 지워질 때 까지 pop을 하는 방법으로 풀었다. 내 풀이보다 if문을 덜 거치기 때문에 더 효율적인것 같다.
출처:
'알고리즘 > 알고리즘 베이스' 카테고리의 다른 글
[JS 알고리즘] 쇠막대기 (스택) (0) | 2023.04.03 |
---|---|
[JS 알고리즘] 후위식 연산 (postfix) (0) | 2023.04.03 |
[JS 알고리즘] 올바른 괄호 (스택) (0) | 2023.03.31 |
[JS 알고리즘] 모든 아나그램 찾기 (해쉬, 투포인터, 슬라이딩 윈도우) (0) | 2023.03.30 |
[JS 알고리즘] 아나그램(해쉬) (0) | 2023.03.30 |
Comments