백준 - 문자열 폭발

greenTea·2023년 8월 7일
0
public class Main {

    static String bomb;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        bomb = sc.nextLine();

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < str.length(); i++) {
            sb.append(str.charAt(i));

            if (sb.length() < bomb.length()) {
                continue;
            }

            if (check(sb)) {
                sb.delete(sb.length() - bomb.length(), sb.length());
            }
        }

        System.out.println(sb.isEmpty() ? "FRULA" : sb);
    }

    private static boolean check(StringBuilder sb) {
        for (int j = 0; j < bomb.length(); j++) {
            char c1 = sb.charAt(sb.length() - bomb.length() + j);
            char c2 = bomb.charAt(j);
            if (c1 != c2) {
                return false;
            }
        }
        return true;
    }

}

🫡bomb가 str안에 들어있을 경우 해당 문자를 지워주는 문제입니다.
Stack으로 풀어도 되지만 저는 StringBuidler를 이용해서 풀었습니다.
다른 분의 풀이를 참고하여 풀었습니다.(문제를 잘 못 이해해서 시간이 걸렸습니다....😭)

1.StringBuilder에 하나식 넣어줍니다. 이 때 StringBuilder의 길이가 bomb의 길이보다 길 경우 로직을 실행합니다.

  1. check 로직의 경우 해당 위치부터 bomb 문자열과 일치하는지 체크하는 로직입니다. 일치한다면 해당 문자열만큼 StringBuilder에서 삭제해주면 되고 아니라면 다음 for문으로 가면됩니다.

  2. StringBuilder의 길이가 0이라면 FRULA를 출력하고 아니라면 StringBuilder의 값을 출려하면 됩니다.

참고자료: 티스토리 - 코드 연구소
출처 : 백준 - 문자열 폭발

profile
greenTea입니다.

0개의 댓글