엄지월드

백준 6550 부분 문자열 본문

알고리즘

백준 6550 부분 문자열

킨글 2024. 7. 29. 22:50

설명

입력을 받을 때 끝내는 조건에 대해서 알지 못해서 조금 삽질했다.

그래서 br.readLine() 시에 null이거나 ""이면 끝내도록 했다.

 

문제 풀이는 아래와 같이 접근했다. 

1. s 문자 1개를 집어서 t 문자를 순회

2. 없으면 No

3. 있으면 s 문자를 또 1개 집어서 다음 idx부터(searchIdx+1) t문자를 순회한다. 

 

코드

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 Main {

    // 6550
    public static void main(String[] args) throws IOException {
        process();
    }

    private static void process() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        String str;

        while(true){
            str = br.readLine();
            if(str == null || str.isEmpty()) break;

            st = new StringTokenizer(str);
            String s = st.nextToken();
            String t = st.nextToken();

            int sIdx = 0;
            int searchIdx = 0;
            while(true) {
                if(t.contains(s)) {
                    bw.write("Yes\n");
                    break;
                }

                char c = s.charAt(sIdx);
                boolean isMatch = false;
                for (int i = searchIdx; i < t.length(); i++) {
                    // 동일한 것을 찾으면
                    if(c == t.charAt(i)) {
                        searchIdx = i+1;
                        sIdx++;
                        isMatch = true;
                        break;
                    }
                }

                if(!isMatch) {
                    bw.write("No\n");
                    break;
                }

                if(sIdx == s.length()) {
                    bw.write("Yes\n");
                    break;
                }
            }
        }


        bw.flush();
        bw.close();
        br.close();
    }
}

'알고리즘' 카테고리의 다른 글

백준 1817 짐 챙기는 숌  (0) 2024.07.31
백준 5648 역원소 정렬  (0) 2024.07.30
백준 16212 정열적인 정렬  (0) 2024.07.24
백준 14912 숫자 빈도수  (2) 2024.07.23
백준 14405 피카츄  (2) 2024.07.22
Comments