문제
2개의 문자열 s와 t가 주어졌을 때 s가 t의 부분 문자열인지 판단하는 프로그램을 작성하라. 부분 문자열을 가지고 있는지 판단하는 방법은 t에서 몇 개의 문자를 제거하고 이를 순서를 바꾸지 않고 합쳤을 경우 s가 되는 경우를 이야기한다.
sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia
caseDoesMatter CaseDoesMatter
풀이
- 입력 크기를 안 준 문제는 처음 풀어봤는데 신선하다.
처음에는 자료구조를 사용해서 contains로 접근했는데 그러면 순서가 상관 없어도 true가 나와버려서 그냥 주어진 값을 바로 charAt으로 대조하면서 맞으면 다음 값을 조회하는 식으로 변경했다. 그리고 그렇게 count도 1씩 증가시켜 count가 처음으로 주어진 문자열과 길이가 같다면 Yes 출력하고 아니면 No 출력하는 방식으로 구현했다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true){
String temp= br.readLine();
if(temp == null) break;
StringTokenizer st = new StringTokenizer(temp," ");
String str = st.nextToken();
String str2 = st.nextToken();
checking(str,str2);
}
}
static void checking(String str,String str2){
int count = 0;
int index = 0;
for(int i =0;i<str2.length();i++){
if(str.charAt(index) == str2.charAt(i)){
index++;
count++;
if(index == str.length()) break;
}
}
if(count == str.length()){
System.out.println("Yes");
}else {
System.out.println("No");
}
}
}
'알고리즘' 카테고리의 다른 글
백준 No.5972 택배 배송 - JAVA (0) | 2023.03.02 |
---|---|
백준 No.1446 지름길 - JAVA (0) | 2023.03.01 |
백준 No.18352특정 거리의 도시 찾기 - JAVA (0) | 2023.02.28 |
백준 No.1417 국회의원 선거 - JAVA (0) | 2023.02.27 |
백준 No.1012 유기농 배추 - JAVA (0) | 2023.02.27 |