## 의사코드 ##
# 비밀번호의 알파벳 중 등장하는 순서대로 N글자만 정확히 기억
# -> 석규가 기억하는 원본 알파벳을 큐로 사용
# 포스트잇에 적힌 문자열의 알파벳을 하나씩 확인하면서
# 현재 알파벳이 원본 알파벳 리스트의 첫 글자랑 같으면 새로 생성할 문자열에 추가 + 원본 알파벳 리스트에서 pop(0)
# 새로 생성한 문자열이 원본 알파벳이랑 동일하면 true
통과한 코드
n, m = map(int, input().split())
# 석규가 기억하는 원본 알파벳
original_s = input()
for _ in range(m):
# 포스트잇에 적힌 문자열
postit = input()
# 원본 알파벳 리스트 초기화
s = list(original_s)
res = '' # 새로 생성할 문자열
# 포스트잇에 적힌 문자열의 알파벳 하나씩 확인
for p in postit:
# 원본 알파벳 리스트의 모든 알파벳이 pop되었으면 종료
if s == []:
break
else:
# 현재 알파벳이 원본 알파벳 리스트의 첫 번째 알파벳과 같다면 새로 생성할 문자열에 추가하고, 원본 알파벳 리스트에서 pop
if p == s[0]:
res += p
s.pop(0)
# 새로 생성한 문자열이 원본 알파벳과 같다면 true
if res == original_s:
print('true')
else:
print('false')
석규가 기억하는 원본 알파벳의 순서를 지켜야 함
-> 석규가 기억하는 원본 알파벳을 선입선출 개념인 '큐'라고 생각
포스트잇에 적힌 문자열의 현재 알파벳과 원본 알파벳의 첫 번째 글자가 동일하면 원본 알파벳에서 첫 글자를 pop
과정 확인
"""
원본 알파벳: PPAP
포스트잇에 적힌 문자열: PPAPP
원본 알파벳 리스트: ['P', 'P', 'A', 'P']
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'P', 'A', 'P']
새로 생성된 문자열: P
pop된 원본 알파벳 리스트: ['P', 'A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'A', 'P']
새로 생성된 문자열: PP
pop된 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: A
남아있는 원본 알파벳 리스트: ['A', 'P']
새로 생성된 문자열: PPA
pop된 원본 알파벳 리스트: ['P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P']
새로 생성된 문자열: PPAP
pop된 원본 알파벳 리스트: []
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: []
true
--------------------------------------------------------------------------------
포스트잇에 적힌 문자열: PPPPA
원본 알파벳 리스트: ['P', 'P', 'A', 'P']
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'P', 'A', 'P']
새로 생성된 문자열: P
pop된 원본 알파벳 리스트: ['P', 'A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'A', 'P']
새로 생성된 문자열: PP
pop된 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: A
남아있는 원본 알파벳 리스트: ['A', 'P']
새로 생성된 문자열: PPA
pop된 원본 알파벳 리스트: ['P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
false
--------------------------------------------------------------------------------
포스트잇에 적힌 문자열: APPPP
원본 알파벳 리스트: ['P', 'P', 'A', 'P']
현재 알파벳: A
남아있는 원본 알파벳 리스트: ['P', 'P', 'A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'P', 'A', 'P']
새로 생성된 문자열: P
pop된 원본 알파벳 리스트: ['P', 'A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'A', 'P']
새로 생성된 문자열: PP
pop된 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
false
--------------------------------------------------------------------------------
포스트잇에 적힌 문자열: PPPAP
원본 알파벳 리스트: ['P', 'P', 'A', 'P']
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'P', 'A', 'P']
새로 생성된 문자열: P
pop된 원본 알파벳 리스트: ['P', 'A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'A', 'P']
새로 생성된 문자열: PP
pop된 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: A
남아있는 원본 알파벳 리스트: ['A', 'P']
새로 생성된 문자열: PPA
pop된 원본 알파벳 리스트: ['P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P']
새로 생성된 문자열: PPAP
pop된 원본 알파벳 리스트: []
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
true
--------------------------------------------------------------------------------
포스트잇에 적힌 문자열: PAPAP
원본 알파벳 리스트: ['P', 'P', 'A', 'P']
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'P', 'A', 'P']
새로 생성된 문자열: P
pop된 원본 알파벳 리스트: ['P', 'A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: A
남아있는 원본 알파벳 리스트: ['P', 'A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P', 'A', 'P']
새로 생성된 문자열: PP
pop된 원본 알파벳 리스트: ['A', 'P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: A
남아있는 원본 알파벳 리스트: ['A', 'P']
새로 생성된 문자열: PPA
pop된 원본 알파벳 리스트: ['P']
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
현재 알파벳: P
남아있는 원본 알파벳 리스트: ['P']
새로 생성된 문자열: PPAP
pop된 원본 알파벳 리스트: []
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
true
--------------------------------------------------------------------------------
"""