6-2) 괄호 문자 제거
문제
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
[입력설명]
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
[출력설명]
남은 문자만 출력한다.
입력예제 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
출력예제 1
EFLM
문제 풀이
예습이론
- 스택은 배열이기 때문에, 생성할 때
let stack=[]
와 같이 하면 된다. stack에 요소 x를 삽입하고 싶다면stack.push(x)
, 요소를 꺼내고 싶다면stack.pop()
을 하면된다. LIFO이기 때문에, pop을 하면 가장 마지막에 들어간 요소가 나오게 된다. while(stack.pop()!=='(')
은, '('까지 pop을 하고 나서야 false가 된다.stack.join('')
은, 배열을 string으로 합쳐준다. (앞 강의 참고)
코드
이 문제는 스택을 활용한 문제이다. 여는괄호와 문자가 나오면 push, 닫는괄호가 나오면 stack에서 여는괄호(자신의 짝)까지 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(x===')'){
//여는괄호(자신의 짝)까지 pop
while(stack.pop()!=='('); //'('까지 pop하고 거짓이 됨-> 반복문 중단
}
else stack.push(x); //닫는 괄호가 아닐 때는 push
}
//console.log(stack); //배열의 형태로 들어가있음 ['a', 'b', 'c']
answer=stack.join(''); //string으로 합쳐줌
return answer;
}
let str="(A(BC)D)EF(G(H)(IJ)K)LM(N)";
console.log(solution(str));
</script>
</body>
</html>
Author And Source
이 문제에 관하여(6-2) 괄호 문자 제거), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rladpwl0512/6-2-괄호-문자-제거저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)