[백준 알고리즘] 9935번 문자열 폭발 (Java)

Ash·2020년 8월 31일
0
post-thumbnail


풀이방법

입력받은 문자열을 한글자씩 stack에 넣으며 stack에 쌓인 문자열의 길이가 폭발 문자열보다 크거나 같으면 폭발문자열을 찾아 없애는 방법으로 풀었다.

  1. stack에 입력받은 문자열을 한글자씩 넣는다.
  2. stack에 넣은 문자열의 길이가 폭발 문자열의 길이보다 같거나 커지는 경우 stack에서 글자를 꺼내며 폭발 문자열이 만들어지는지 확인하고 폭발 문자열인 경우 그 길이만큼 stack에서 꺼낸다.
  3. stack 에 남은 문자열의 길이를 체크하여 남아있는 문자의 길이가 0인 경우 "FRULA"를 0 이상인 경우 문자열을 출력한다.

소스코드

public class Main {
	// stack 사용
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		String origin = br.readLine();
		String remove = br.readLine();
		Stack<Character> stack = new Stack<Character>();

		for (int i = 0; i < origin.length(); i++) {
			stack.push(origin.charAt(i));

			if (stack.size() >= remove.length()) {
				boolean flag = true;
				for (int j = 0; j < remove.length(); j++) {
					if (stack.get(stack.size() - remove.length() + j) != remove.charAt(j)) {
						flag = false;
						break;                                            
					}
				}
				if (flag) {
					for (int j = 0; j < remove.length(); j++) {
						stack.pop();
					}
				}
			}
		}
		StringBuilder sb = new StringBuilder();
		for(char ch : stack) {
			sb.append(ch);
		}
		
		System.out.println(sb.length() > 0 ? sb.toString() : "FRULA");
	}
}
profile
기록남기기👩‍💻

1개의 댓글

comment-user-thumbnail
2021년 8월 30일

와앙 완전 똑똑하셔요! 완전 깔끔하게 이해했습니다 ㅎㅎ

답글 달기