삐까냥의 파도타기
9935번) 문자열 폭발 본문
문제 출처 : https://www.acmicpc.net/problem/9935
import java.util.Scanner; public class Q9935 { static char[] chars; static String boom; public static void main(String[] args) { Scanner sc = new Scanner(System.in); String string = sc.nextLine(); boom = sc.nextLine();
chars = new char[string.length()];
char lastChar = boom.charAt(boom.length()-1); int nowPoint = 0; for ( int i = 0; i < string.length(); i++ ) { char temp = string.charAt(i); chars[nowPoint] = temp; if ( nowPoint >= boom.length()-1 && temp == lastChar ) { nowPoint = calLast(nowPoint); } else { chars[nowPoint++] = string.charAt(i); } }
if ( nowPoint == 0 ) { System.out.println("FRULA"); } else { System.out.println(String.valueOf(chars).substring(0, nowPoint)); } }
public static int calLast(int last) { for ( int i = 1; i < boom.length(); i++ ) { if ( boom.charAt(boom.length()-1-i) != chars[last - i] ) { return ++last; } } return last - (boom.length() - 1); } } |
char을 하나씩 넣다가, 폭발하는 문자열 마지막 문자와 삽입한 문자가 같을 경우
뒤에서부터 문자열 폭발 검사를 통해 문자열 폭발시킵니다.
이걸 반복하면 폭발할 문자열은 모두 폭발합니다.
그냥 간단히 replace를 하니 시간초과가 뜨네요.
'코딩 > 백준 알고리즘' 카테고리의 다른 글
9996번) 한국이 그리울 땐 서버에 접속하지 (0) | 2017.11.12 |
---|---|
9933번) 민균이의 비밀번호 (0) | 2017.11.11 |
1764번) 듣보잡 (0) | 2017.11.11 |
2941번) 크로아티아 알파벳 (0) | 2017.11.11 |
2743번) 단어 길이 재기 (0) | 2017.11.11 |