본문 바로가기
백준

[백준] 알고리즘 분류(브루트포스 알고리즘,JAVA)1543번, 문서 검색

by 열정적인 이찬형 2022. 12. 3.

문제 링크

 

1543번: 문서 검색

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

www.acmicpc.net


주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

이 문제에 핵심

 

1. 문서에 존재하는 단어를 동시에 셀 수 없습니다.

2. 문서에서 단어가 중복되지 않게 존재하는 최대 횟수를 결과로 출력합니다.

 

알고리즘 진행 순서.

 

1. 입력된 정보를 저장합니다.

 

2. 문서에 존재하는 단어를 '1'로 변경합니다.

 

3. '1'의 개수를 결과로 출력합니다.

 

 

단어 세기

 

문서에 존재하는 단어를 '1'로 변경합니다.

 

'1'의 개수 = 단어의 개수

 

예를 들어
 
aabba
 
찾는 단어 : a

 

단어를 '1'로 변경 진행
 
11bb1

 

1의 개수 : 3개
 
단어의 개수 : 3개

 

예제입력 1.

 

1. 입력된 정보를 저장합니다.

 

문서 : ababababa

 

찾는 단어 : aba

 

2. 문서에 존재하는 단어를 '1'로 변경합니다.

 

단어를 '1'로 변경!

 

ababababa

= 1b1ba

 

3. '1'의 개수를 결과로 출력합니다.

 

변경된 문서 : 1b1ba1의 개수 2를 결과로 출력합니다.

 

  • BufferedReader를 사용하여 입력되는 정보를 저장합니다.
  • String.replaceAll을 사용하여 문서에 찾는 단어를 '1'로 변경하였습니다.
  • for문과 charAt을 이용하여 '1'의 개수를 탐색합니다.
  • 모두 탐색하였을 때 '1'의 개수를 결과로 BufferedWriter 저장하였습니다.
  • BufferedWriter에 저장된 결과값을 출력하였습니다.

 

import java.io.*;

public class Main{
    public static void main(String[] args) throws IOException {
        //입력값 처리하는 BufferedReader
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //결과값 출력하는 BufferedWriter
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        String text = br.readLine();
        String word = br.readLine();
        //문서에 찾는 단어 1로 변경하기
        text = text.replaceAll(word, "1");
        int answer = 0;
        //1의 개수 구하기
        for(int i=0;i<text.length();i++){
            if(text.charAt(i) == '1')
                answer++;
        }
        bw.write(answer + "");	//1의 개수 BufferedWriter 저장
        bw.flush();		//결과 출력
        bw.close();
        br.close();
    }
}

댓글