문제 : boj6550
s쪽에 포인터를 하나 두고, t쪽에도 포인터를 하나 둔다. 이후 s쪽 포인터를 하나씩 증가시키면서, 해당 포인터가 가르키는 문자가 나올 때 까지 t 포인터를 증가시키면서 찾는다. 최종적으로 t포인터가 t를 전부 찾기 전까지 s쪽 포인터가 끝까지 도달한다면 Yes가 된다. 이하 '예제 입력 1'의 3번째 테스트 케이스를 찾는 과정을 그려봤다. s쪽 포인터가 si, t쪽 포인터가 ti 이다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while (true) {
String str = br.readLine();
if (str == null) break;
StringTokenizer st = new StringTokenizer(str);
String s = st.nextToken();
String t = st.nextToken();
int si = 0;
int ti = 0;
while (si < s.length()) {
while (ti < t.length() && t.charAt(ti) != s.charAt(si)) ti++;
if (ti < t.length() && s.charAt(si) == t.charAt(ti)) { si++; ti++; }
else break;
}
sb.append(si == s.length() ? "Yes\n" : "No\n");
}
System.out.print(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
백준 18258 자바 - 큐 2 (BOJ 18258 JAVA) (0) | 2022.03.15 |
---|---|
백준 3022 자바 - PRASE (BOJ 3022 JAVA) (0) | 2022.03.14 |
백준 6186 자바 - Best Grass (BOJ 6186 JAVA) (0) | 2022.03.12 |
백준 14472 자바 - 休憩スペース (Refreshment Area) (BOJ 14472 JAVA) (0) | 2022.03.11 |
백준 14719 자바 - 빗물 (BOJ 14719 JAVA) (0) | 2022.03.10 |
댓글