🌞Algorithm/🔥Baekjoon

[Baekjoon] 6550_부분 문자열

뿌야._. 2023. 11. 16. 17:13

Silver V

문제(출처: https://www.acmicpc.net/problem/6550)

< 부분 문자열 >

 

문제 풀이 

 

s가 t의 부분 문자열인지 확인한다.

 

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class _6550_ { // 부분 문자열

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		String str = "";
		while ((str = bf.readLine()) != null) {
			st = new StringTokenizer(str);

			String s = st.nextToken();
			String t = st.nextToken();

			int arr[][] = new int[s.length() + 1][t.length() + 1];

			for (int i = 0; i < s.length(); i++) {
				for (int j = 0; j < t.length(); j++) {
					if (s.charAt(i) == t.charAt(j)) {
						arr[i + 1][j + 1] = Math.max(arr[i][j] + 1, arr[i][j + 1]);
					} else {
						arr[i + 1][j + 1] = Math.max(arr[i][j + 1], arr[i + 1][j]);
					}
				}
			}
			if (arr[s.length()][t.length()] == s.length()) {
				System.out.println("Yes");
			} else {
				System.out.println("No");
			}
		}
	}
}

 

Main

변수)
str , s, t : 입력받은 문자열
arr : 부분 문자열

 

문자열을 각각 입력받은 후 두 문자열의 부분 문자열을 찾는다. 그 후 부분 문자열의 최대 개수가 s의 문자열 길이와 같다면 s가 t의 부분 문자열이란 뜻이므로 Yes를 출력하고 s의 문자열 길이와 같지 않다면 No를 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 1448_삼각형 만들기  (1) 2023.11.20
[Baekjoon] 13305_주유소  (0) 2023.11.17
[Baekjoon] 3135_라디오  (1) 2023.11.15
[Baekjoon] 5671_호텔 방 번호  (0) 2023.11.14
[Baekjoon] 1916_최소비용 구하기  (0) 2023.11.10