부분 문자열 순열
면접 대비시간 제한1초메모리 제한512 MB
문자열 S와 P가 주어집니다. P의 어떤 순열이 S의 어떤 순열의 부분 문자열이 될 수 있는지 판단합니다.
문제
두 문자열 와 가 주어졌을 때, 가 의 부분 문자열로 나타나는지 판별하는 방법은 여러 가지가 있다. 가장 단순한 방법은 가 의 모든 부분 문자열과 같은지 직접 확인하는 것이다. 길이가 인 의 부분 문자열은 개 존재할 수 있으므로 이 방법의 시간 복잡도는 이다. KMP(Knuth-Morris-Pratt) 알고리즘을 사용하면 에 해결할 수도 있다.
이 문제에서는 이와 비슷한 문제를 다룬다.
두 문자열 와 가 주어진다. 를 의 순열(permutation)인 모든 문자열의 집합, 를 의 순열인 모든 문자열의 집합이라고 하자. 의 원소 와 의 원소 중에서 가 의 부분 문자열로 나타나는 쌍이 존재하는지 판별하라.
예를 들어 , 라고 하자. 그러면 이고, 이다. 의 문자열 가 의 문자열 의 부분 문자열로 나타나는 것을 확인할 수 있다. 즉 이다. 이 예에서는 , , , 등 조건을 만족하는 다른 쌍도 찾을 수 있다.
입력
입력은 두 줄로 이루어진다. 첫 번째 줄에는 문자열 가 주어진다 (). 두 번째 줄에는 문자열 가 주어진다 (). 와 는 모두 알파벳 소문자(a-z)로만 이루어져 있다.
출력
의 원소 와 의 원소 중에서 가 의 부분 문자열로 나타나는 쌍이 존재하면 “YES”를, 존재하지 않으면 “NO”를 큰따옴표 없이 한 줄에 출력한다.