🌞Algorithm/🔥Baekjoon

[Baekjoon] 11008_복붙의 달인

뿌야._. 2024. 6. 5. 20:32

Silver V

문제(출처: 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