[알고리즘] 인프런 - 괄호문자제거

정은아·2024년 1월 10일
post-thumbnail

인프런 - 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

- Section 5 - 괄호문자 제거 문제

내 풀이

import java.util.Scanner;
import java.util.Stack;

public class Stack_02 {
	public static void main(String[] args) {
		// 괄호 안에 안묶인 문자만 출력하는 문제
		
		// 1. 테스트케이스 String을 받는다.
		// 2. 답을 출력할 answer 변수를 만든다.
		// 3. Stack을 만든다.
		// 4. forEach문을 돌려서 값을 넣는다.
		// 5. forEach문 안에 if문을 넣어서 ')'가 아니면 add한다.
		// 6. '(' 일 경우 while문을 돌려서 그 동안 축적된 문자를 모두 pop한다.
		// 7. for문을 stack.size()만큼 돌려서 출력한다.
		
		Scanner sc = new Scanner(System.in);
		
		String str = sc.next();
		String answer = "";
		
		Stack<Character> stack = new Stack<>();
		
		for (Character c : str.toCharArray()) {
			if (c == ')') {
				while(stack.pop() != '(');
			}else {
				stack.push(c);
			}
		}
		
		for (int i = 0; i < stack.size(); i++) {
			answer += stack.get(i);
		}
		
		System.out.println(answer);
	}
}

느낀점

드디어 실수 없이 풀었다! while문이 도는 동안 모두 pop을 한다는게 신기하다.
이렇게 pop을 할 수 있구나! 또한, stack을 출력할 때에는 배열처럼 arr[i]를 출력하는게 아니고
stack.get(i)로 출력한다는걸 직접 써보는 소중한 시간이었다.

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글