문제
https://www.acmicpc.net/problem/1543
1543번: 문서 검색
세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한
www.acmicpc.net
코드 1 (직접 구현)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String target = br.readLine();
String pattern = br.readLine();
int cnt = 0;
int i = 0;
while(i <= target.length() - pattern.length()){
if (target.substring(i, i + pattern.length()).equals(pattern)){
cnt++;
i += pattern.length();
}
else
i++;
}
bw.write(String.valueOf(cnt));
br.close();
bw.flush();
bw.close();
}
}
코드 2 (다른 코드 참고 - StringBuilder 사용)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
sb.append(br.readLine());
String s = br.readLine();
int cnt = 0, start = 0;
int len = s.length();
while((start = sb.toString().indexOf(s)) != -1){
sb.delete(0, start + len);
cnt++;
}
bw.write(String.valueOf(cnt));
br.close();
bw.flush();
bw.close();
}
}
1) StringBuilder
- indexOf(String str) : str이 등장하는 첫 index를 return
-> 찾으려고 하는 str이 존재하지 않으면 -1을 return
- delete(int start, int end) : start ~ end - 1까지의 내용을 삭제