-
백준 : 부분 문자열 - 6550번 (java)Tech-blog/Algorithm 2023. 3. 2. 00:04
문제
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.io.IOException; import java.util.Scanner; public class SubString { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); String s = sc.next(); String t = sc.next(); char[] sArr = s.toCharArray(); char[] tArr = t.toCharArray(); int cnt = 0; for (int i = 0;i < tArr.length;i++){ if (sArr[cnt] == tArr[i]) cnt++; if (cnt == s.length()) break; } if(cnt == s.length()) System.out.println("Yes"); else System.out.println("No"); } }
정답코드
import java.io.IOException; import java.util.Scanner; public class SubString { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { // 여러개의 테스트 케이스를 받기 위한 반복문 String s = sc.next(); String t = sc.next(); char[] sArr = s.toCharArray(); char[] tArr = t.toCharArray(); int cnt = 0; for (int i = 0; i < tArr.length; i++) { if (sArr[cnt] == tArr[i]) cnt++; if (cnt == s.length()) break; } if (cnt == s.length()) System.out.println("Yes"); else System.out.println("No"); } } }
'Tech-blog > Algorithm' 카테고리의 다른 글
백준 : 유기농 배추 - 1012번 (java) (0) 2023.03.02 백준 - 이장님초대 - 9237 (java) (0) 2023.03.02 백준 : 다익스트라 - 파티 - 1238번 (java) (0) 2023.02.28 백준 : 다익스트라 - 최단경로 - 1753번 (java) (0) 2023.02.27 백준 : 거스름돈 - 14916 (java) (0) 2023.02.21