# (예제 입력 2)
# -> 반지의 문자열의 시작과 끝이 연결되어 있기 때문에 'ZAAAAAAAXY'에 'XYZ'가 포함됨
## 의사코드 ##
# 문자열의 길이부터 0까지 역순으로
# for i in range(len(string), 0, -1):
# 반지에서 (10 - (i-1))인 값의 인덱스부터 끝까지 + 반지의 처음부터 (문자열의 길이 - i)인 값의 인덱스까지
# if ring[10-(i-1):] + ring[:len(string)-i] == string:
# cnt += 1
첫 번째 시도
string = input()
n = int(input())
cnt = 0 # 찾고자하는 문자열이 포함된 반지의 개수
for _ in range(n):
ring = input()
# 찾고자하는 문자열이 원래 반지에 포함되어 있으면 개수 + 1
if string in ring:
cnt += 1
else:
# 문자열의 길이부터 0까지 역순으로
for i in range(len(string), 0, -1):
# 반지에서 (10 - (i-1))인 값의 인덱스부터 끝까지 + 반지의 처음부터 (문자열의 길이 - i)인 값의 인덱스까지
if ring[10-(i-1):] + ring[:len(string)-i] == string:
cnt += 1
print(cnt)
-> 틀림
통과한 코드
string = input()
n = int(input())
cnt = 0 # 찾고자하는 문자열이 포함된 반지의 개수
for _ in range(n):
ring = input()
# 반지를 하나 더 연결
ring += ring
for i in range(20):
if string == ring[i:len(string)+i]:
cnt += 1
break
print(cnt)
-> 처음부터 반지를 하나 더 연결해서 인덱스로 슬라이싱
과정 확인
"""
찾고자 하는 문자열: YZA
개수: 0
반지: ZAAAAAAAXY
연결된 반지: ZAAAAAAAXYZAAAAAAAXY
ring[i:len(string)+i]: YZA
개수: 1
1
"""