백준/그리디 알고리즘

1543 문서 검색

have a good time 2021. 10. 18. 19:46

https://www.acmicpc.net/problem/1543

 

1543번: 문서 검색

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

www.acmicpc.net

 

 

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 A = br.readLine();
		String B = br.readLine();
		int count =0;
		
		for(int i=0; i<=A.length()-B.length();i++) {
			String C =A.substring(i,i+B.length());
			if(C.equals(B)) {
				count ++;
				i+=B.length()-1;
			}
			
			
		}
		System.out.println(count);
		
	  }
		
		
}

특별한 게 있는지 알았는데 없었고,

그냥, 입력받은 String A 의 첫번째 글자부터 String B의 글자가 있는지 확인해서,

있으면, i를 B길이만큼 증가시켜서 그 다음부터 또 B글자가 있는지 확인

없으면, i를 다음으로 1증가시켜서 거기서부터 또 글자 B가 있는지 확인 

 

A.substring(a,b)

String A의 a위치부터 b-1 위치까지의 문자열을 가지고 옴

 

C.equals(B)

String C랑 String B의 문자열이 같은지 확인 

 

그리고 for문은 A길이 - B 길이만큼 해야 함

입력에서 주어진 예로 설명하면 

A길이 - B 길이 = 6

 

i=0

ababababa

aba

 

i=1

ababababa

 aba

 

i=2

ababababa

   aba

 

i=3

ababababa

     aba

 

i=4

ababababa

      aba

 

i=5

ababababa

        aba

 

i=6

ababababa

          aba