백준 1543번 문서 검색(JAVA)

민성재·2021년 4월 17일
0

Algorithm & Coding Test

목록 보기
3/20

  • 풀이 방식
    전체 문서인 str , 검색하려는 단어 input 스트링 선언 후
    문서중에 input.charAt[0] 으로 시작하는 지점이 있는지 찾고 있다면 그 지점부터 input 크기만큼 자른 것이 input과 같은지 체크한다.

중복되지 않게 input스트링을 검색해야하므로 이미 검색된 부분은 visited 배열을 통해 해결했다.
이미 검색된 부분은 true 처리하여 다시 검색되지 않도록 했다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;


public class Main {

	public static void main(String[] args ) throws IOException{
		Scanner sc = new Scanner(System.in);

		String str = sc.nextLine();
		String input = sc.nextLine();
		int cnt = 0;
		boolean [] visited = new boolean[str.length()];
		Arrays.fill(visited, false);
		
		for(int i = 0 ; i < str.length()- input.length()+1; i ++) {
			//문서중에 단어로 시작하는곳이 있음
			if(input.charAt(0) == str.charAt(i) && !visited[i]) {
				//시작지점부터 단어 크기로 자른거랑 단어가 동일함
				if(str.substring(i,i+input.length()).equals(input)) {
					//System.out.printf("%s ", str.substring(i,i+input.length()));
					cnt++;
                    		
					for(int k = i ; k < i+input.length(); k++) {
                    				//검색된 부분은 true 처리해서 다시 검색 안되도록 처리
						visited[k] = true;
					}
				}
			}
		}
		
		System.out.println(cnt);
	}
}























profile
민성재 개발 블로그

0개의 댓글