Algorithm

백준[1543] - 문서 검색

빠쿤 2024. 1. 27. 21:12
  • 문제: https://www.acmicpc.net/problem/1543
  • 분류: 문자열, 브루트포스
  • 난이도: S5
  • 소요시간: 15m
  • 자아성찰:
    • 시간복잡도는 O(NM), N <=2500, M <=50으로 브루트포스를 사용할 수 있다.
    • String.substring() 메서드는 idx 매개변수가 항상 헷갈린다.. (beginIndex, endIndex)
      • substring(beginIndex) : 해당 index부터 문자열 끝까지
      • substring(beginIndex, endIndex) : beginIndex부터 endIndex - beginIndex 크기만큼
 

1543번: 문서 검색

세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한

www.acmicpc.net

 


public class B_1543 {

    static String s, w;
    static int count = 0;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        s = br.readLine();
        w = br.readLine();
        // 단어 길이가 문서 길이보다 길면 0
        if (w.length() > s.length()) {
            System.out.println(0);
            return;
        }
        int len = w.length();
        int end = w.length();
        // 문서의 끝에 도달할 때까지 반복
        while (end <= s.length()) {
            // end까지 단어 길이만큼 substring으로 슬라이싱
            String substring = s.substring(end - len, end);
            // substring이 단어와 일치한다면 count 증가 및 위치 다음 index로 이동
            if (substring.contains(w)) {
                count++;
                end = end + len;
            } else {
                end++;
            }
        }
        System.out.println(count);
    }
}