11-04 13:28
- Today
 
- Total
 
													Link
													
												
											
												
												
											
									개발하는 고라니
[백준] 9935번 : 문자열 폭발 본문
반응형
    
    
    
  9935번: 문자열 폭발
첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모
www.acmicpc.net
[문자열 / Stack(Array)]
# 풀이 요약
1. 문자열(origin)을 받아 char[ ] arr로 변환한다.
2. 폭발 문자열을 받아 char[ ] bomb으로 변환한다.
3. char[ ] stack을 준비한다. 이때 top = -1
4. arr의 한 문자씩 stack에 넣는다.
5. 만약 stack에 넣은게 bomb의 마지막 문자라면 bomb의 크기만큼 stack의 뒤로 가며 문자 비교
6 비교 결과 bomb을 동일하게 포함하고 있다면 문자열 폭파 (top -= bombSize)
(4~6) 반복
7. stack에 있는것 문자열로 변환 후 origin에 대입 후 결과 출력
# Code </>
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String origin = br.readLine();
        
        char[] bomb = br.readLine().toCharArray();
        int bombSize = bomb.length;
        char[] arr = origin.toCharArray();
        int top = -1;
        char[] stack = new char[1000001];
        
        for (char c : arr) {
            stack[++top] = c;
            //현재 문자가 폭발 문자열의 가장 마지막 꺼와 같다면 and stack의 크기가 폭발문자열 크기 이상이어야함
            if (stack[top] == bomb[bombSize - 1] && top >= bombSize - 1) {
                boolean flag = true;
                //한 문자씩 뒤로 가며 폭발 문자와 비교 (폭발 문자열과 다르면 flag = false)
                for (int j = bombSize - 1, z = 0; j >= 0; j--, z++)
                    if (stack[top - z] != bomb[j]) {
                        flag = false;
                        break;
                    }
                if (flag) //폭발 문자열이 존재하면 폭파 (top을 줄이면된다)
                    top -= bombSize;
            }
        }
        StringBuilder sb = new StringBuilder();
        for(int i=0; i<=top; i++)
            sb.append(stack[i]);
        origin = sb.toString();
        System.out.println(origin.equals("")? "FRULA":origin);
    }
}반응형
    
    
    
  'Programming > 백준' 카테고리의 다른 글
| [백준] 1062번 : 가르침 (0) | 2021.03.28 | 
|---|---|
| [백준] 6603번 : 로또 (0) | 2021.03.26 | 
| [백준] 4949번 : 균형잡힌 세상 (0) | 2021.03.26 | 
| [백준] 14503번 : 로봇 청소기 (0) | 2021.03.26 | 
| [백준] 1094번 : 막대기 (0) | 2021.03.25 | 
			  Comments