https://www.acmicpc.net/problem/1543
[풀이]
처음에, replaceFirst() 메소드를 이용하여 풀었지만, replace를 할 경우 인덱스에 대한 처리를 하지 못해서 다음과 같은 반례에 대처를 하지 못했다. (반례) aabb / ab / 답은 1이 나와야 하는데 2가 나오는 분들이 있을 것이다. 그렇기 때문에 for문을 돌면서 문자열 길이만큼 확인 후, 찾게 되었을 때 인덱스를 문자열 길이만큼 더하는 식으로 풀었다.
(주의해야할 부분)
내가 틀렸기 때문이어서인지, 처음 내가 잘못한 인덱스에 관한 신경을 써야한다. 또한 같은 것을 발견했을 때 문자열 길이만큼 인덱스를 더하는 것도 중요한 부분이라고 생각한다.
[코드]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line = bf.readLine();
String input = bf.readLine();
int answer = 0;
for (int i = 0; i < line.length() - input.length() + 1; i++) {
if (line.startsWith(input, i)) {
i = i + input.length() - 1;
answer++;
}
}
System.out.println(answer);
}
}
'Algorithm > 백준' 카테고리의 다른 글
백준 11720번 : 숫자의 합(Java) (0) | 2021.08.12 |
---|---|
백준 16395번 : 파스칼의 삼각형(Java) (0) | 2021.08.08 |
백준 20365번 : 블로그2(Java) (0) | 2021.08.05 |
백준 11060번 : 점프 점프(Java) (0) | 2021.08.04 |
백준 1874번 : 스택 수열(Java) (0) | 2021.08.01 |