괄호 문자 제거
2022. 3. 16. 22:01ㆍ코딩 테스트(JAVA)/인프런 문제풀이
설명
입력된 문자열에서 소괄호 ( ) 사이에 존재하는 모든 문자를 제거하고 남은 문자만 출력하는 프로그램을 작성하세요.
입력
첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다.
출력
남은 문자만 출력한다.
예시 입력 1
(A(BC)D)EF(G(H)(IJ)K)LM(N)
예시 출력 1
EFLM
수도 코드
- (, 문자는 push
- ) 만나면,
- (까지 문자열 포함 제거
- 최종적으로 남아있는걸 return
정답 코드
import java.util.*;
public class ParenthesisDelete {
public String solution(String str) {
String answer = "";
// Stack 만들기
Stack<Character> stack = new Stack<>();
// str에 들어온 것을 하나씩 쪼개서 분석
for(char x : str.toCharArray()) {
if(x != ')') {
stack.push(x);
}else {
// stack.pop(x)가 아니라 ()
while(stack.pop() != '(');
}
}
// stack에 있는것을 answer에 담아야한다
for(int i=0; i<stack.size(); i++) {
answer += stack.get(i);
}
return answer;
}
public static void main(String[] args) {
ParenthesisDelete T = new ParenthesisDelete();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
💡 str.toCharArray(); 문자열을 한 글자씩 쪼개서 char배열로 변환합니다.
💡 pop()은 stack의 최상단부터 꺼내기도 하고, return도 합니다.
💡 [[중요]]
) 만나면, stack에 쌓인 문자열을 꺼냅니다. 언제까지? ( 까지
그것을 코드로 구현하면 while(stack.pop != ‘(’);
'코딩 테스트(JAVA) > 인프런 문제풀이' 카테고리의 다른 글
공주 구하기 (0) | 2022.03.16 |
---|---|
쇠막대기 (0) | 2022.03.16 |
후위식 연산(postfix) (0) | 2022.03.16 |
크레인 인형뽑기(카카오) (0) | 2022.03.16 |
올바른 괄호 (0) | 2022.03.16 |