자바 백준 6550번
실버 5
https://www.acmicpc.net/problem/6550
6550번: 부분 문자열
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문자열 s 와 t가 빈칸을 사이에 두고 들어온다. s와 t의 길이는 10만을 넘지 않는다.
www.acmicpc.net
문제 보기

분류: 그리디 알고리즘, 문자열
문제 풀기
문자열 s에서 순서대로 하나씩 문자를 선택하고, for loop로 문자열 t의 index를 하나씩 올려가며 같은 문자가 있는지 확인한다.
같은 문자가 있으면 sIndex를 하나씩 늘려가며, 최종 sIndex와 s 문자열 길이 s.length()가 같으면 "Yes"를 출력한다.
코드 보기
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 입력이 있는 동안 반복 while (sc.hasNextLine()) { // 입력된 문자열을 공백을 기준으로 나누어 배열에 저장 String[] input = sc.nextLine().split(" "); String s = input[0]; String t = input[1]; // isSubstring 함수를 사용하여 s가 t의 부분 문자열인지 확인 if (isSubstring(s, t)) { // 부분 문자열인 경우 "Yes" 출력 System.out.println("Yes"); } else { // 부분 문자열이 아닌 경우 "No" 출력 System.out.println("No"); } } } // 부분 문자열 여부를 판단하는 함수 private static boolean isSubstring(String s, String t) { int sIndex = 0; // 문자열 s의 인덱스를 초기화 // 문자열 t의 각 문자에 대해서 반복 for (int i = 0; i < t.length(); i++) { if (sIndex < s.length() && s.charAt(sIndex) == t.charAt(i)) { // sIndex가 s의 길이보다 작고, 문자열 s의 현재 문자와 t의 현재 문자가 같은 경우 sIndex++; // sIndex 증가 (s의 다음 문자를 검사하기 위함) } } // sIndex가 s의 길이와 같으면 s가 t의 부분 문자열 true을 반환 return sIndex == s.length(); } }
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 10820 - 문자열 분석 (0) | 2023.08.22 |
---|---|
[Java] 백준 풀기 1448 - 삼각형 만들기 (0) | 2023.08.21 |
[Java] 백준 풀기 1213 - 팰린드롬 만들기 (0) | 2023.08.16 |
[Java] 백준 풀기 11508 - 2+1 세일 (0) | 2023.08.15 |
[Java] 백준 풀기 10610 - 30 (0) | 2023.08.14 |