#173
Gold II

Jumpring

시간 제한
1s
메모리 제한
1024MB
제출
2
정답
2
맞힌 사람
2
정답 비율
100.0%

문제

길이가 NN인 문자열 S=s1,s2,⋯ ,sNS=s_1, s_2, \cdots, s_N가 주어진다. 승우는 이 문자열에서 0개 이상의 문자를 제거하여 길이가 MM인 새로운 문자열 UU를 만들고자 한다. 두 문자열은 영어 소문자로 이루어져 있으며, MM은 NN보다 작거나 같다.

이때 승우는 서로 인접한 두 문자를 제거할 수는 없다. 즉, 승우는 다음과 같이 문자를 제거한다.

  • 제거할 문자의 개수 K(0≤K≤⌈N2⌉)K(0\le K\le \lceil \frac{N}{2}\rceil)를 선택한다.
  • 길이가 KK인 정수열 x1,x2,⋯ ,xK (1≤xi≤N)x_1, x_2, \cdots , x_K\ (1\le x_i \le N)을 구성하는데, 이 정수열은 오름차 순으로 정렬되어 있고, 인접한 두 수의 차가 2 이상이다.
  • SS에서 sx1,sx2,⋯ ,sxKs_{x_1}, s_{x_2}, \cdots, s_{x_K}를 제거한다.

SS에서 0개 이상의 문자를 제거하여 UU를 만들 수 있는지 판별하는 프로그램을 작성해 보자.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1≤T≤10 000)(1 \leq T \leq 10\,000)

각 테스트 케이스의 첫째 줄에 NN과 MM이 공백으로 구분되어 주어진다. (1≤M≤N≤100 000)(1\le M \le N \le 100\,000)

둘째 줄에 문자열 SS가 주어진다.

셋째 줄에 문자열 UU가 주어진다.

SS와 UU는 영어 소문자로 이루어져 있으며, 모든 테스트 케이스에서 N×MN\times M의 합은 2×1072\times 10^7을 초과하지 않는다.

출력

각 테스트 케이스에 대해서, SS를 TT로 만들 수 있다면 YES를, 만들 수 없다면 NO를 한 줄씩 출력한다.

예제 입력 1

2
7 4
abcdefg
aceg
7 5
abcdefg
abefg

예제 출력 1

YES
NO
  • 첫 번째 테스트 케이스에서는, SS에서 s2s_2, s4s_4, s6s_6을 제거하면 UU를 만들 수 있다.
  • 두 번째 테스트 케이스에서는, SS를 UU로 만들기 위해서 s3s_3과 s4s_4를 제거해야 하지만, 서로 인접한 두 문자를 제거할 수는 없으므로 UU를 만들 수 없다.
문제를 만든 사람
황현석
알고리즘 분류
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출

제출 내역이 없습니다.

맞은 사람
#순위사용자언어시간메모리코드 길이
10069🥇
박승현
C++16ms1620KB1142B
10216🥈
옥찬호
Rust18ms2280KB2567B
난이도 투표
Gold II1명 투표· 7개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
#사용자문제결과언어시간메모리코드 길이제출 시간
10216
맞았습니다
Rust18ms2280KB2567B2026. 10. 03. 23:37
10069
맞았습니다
C++16ms1620KB1142B2026. 10. 01. 08:50