문제(출처: https://www.acmicpc.net/problem/11008)
< 복붙의 달인 >
문제 풀이
p를 붙여 넣기 가능한 경우에는 p를 아닌 경우에는 한 글자씩 입력한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class _11008_ { // 복붙의 달인
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int t = Integer.parseInt(bf.readLine());
for (int i = 0; i < t; i++) {
st = new StringTokenizer(bf.readLine());
String s = st.nextToken();
String p = st.nextToken();
int time = 0, idx = 0;
while (idx < s.length()) {
if (idx + p.length() - 1 < s.length() && s.substring(idx, idx + p.length()).equals(p)) {
idx += p.length();
} else {
idx += 1;
}
time += 1;
}
bw.write(time + "\n");
}
bw.flush();
}
}
변수)
t : 테스트케이스 개수
s, p : 입력 문자열, 클립보드에 저장한 문자열
time, idx : 최소 시간, 입력 위치
테스트케이스 개수를 입력받는다. 테스트 케이스 개수만큼 다음 과정을 반복한다.
1) s와 p를 입력받는다.
2) s의 0번째부터 탐색을 시작한다. 만약 p와 일치하다면 p를 입력하고 일치하지 않다면 한 글자만 입력한다.
3) 최종 최소 시간인 time을 출력한다.

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
| [Baekjoon] 11971_속도 위반 (0) | 2024.06.07 |
|---|---|
| [Baekjoon] 1384_메시지 (0) | 2024.06.06 |
| [Baekjoon] 11292_키 큰 사람 (1) | 2024.06.04 |
| [Baekjoon] 1270_전쟁 - 땅따먹기 (0) | 2024.06.03 |
| [Baekjoon] 21920_서로소 평균 (0) | 2024.05.30 |