알고리즘/[ Baekjoon ]

[ BOJ ][JAVA][6550] 부분 문자열

kim.svadoz 2021. 4. 26. 20:59
반응형

www.acmicpc.net/problem/6550

 

6550번: 부분 문자열

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다.

www.acmicpc.net

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 527 153 127 38.957%

문제

2개의 문자열 s와 t가 주어졌을 때 s가 t의 부분 문자열인지 판단하는 프로그램을 작성하라. 부분 문자열을 가지고 있는지 판단하는 방법은 t에서 몇 개의 문자를 제거하고 이를 순서를 바꾸지 않고 합쳤을 경우 s가 되는 경우를 이야기 한다.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다.

출력

입력된 s와 t의 순서대로 s가 t의 부분 문자열인 경우 Yes라 출력하고 아닐 경우 No라고 출력한다.

예제 입력 1 복사

sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter

예제 출력 1 복사

Yes
No
Yes
No

코드

import java.util.Scanner;

public class p6550 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while (sc.hasNext()) {
            String[] str = sc.nextLine().split(" ");
            String[] word1 = str[0].split("");
            String[] word2 = str[1].split("");

            int x = 0;
            String answer = "Yes";
            for (int i = 0; i < word1.length; i++) {
                boolean run = false;

                for (int j = x; j < word2.length; j++) {
                    if (word1[i].equals(word2[j])) {
                        x = j + 1;
                        run = true;
                        break;
                    }
                }
                if (!run) {
                    answer = "No";
                    break;
                }
            }
            System.out.println(answer);
        }
    }
}
반응형

'알고리즘 > [ Baekjoon ]' 카테고리의 다른 글

[ BOJ ][JAVA][6603] 로또  (0) 2021.04.26
[ BOJ ][JAVA][6593] 상범 빌딩  (0) 2021.04.26
[ BOJ ][JAVA][6443] 애너그램  (0) 2021.04.26
[ BOJ ][JAVA][5622] 다이얼  (0) 2021.04.26
[ BOJ ][JAVA][5597] 과제 안 내신 분..?  (1) 2021.04.26