자바 백준 6550번
실버 5
https://www.acmicpc.net/problem/6550
문제 보기
분류: 그리디 알고리즘, 문자열
문제 풀기
문자열 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 |