문제
풀이
처음 생각한 것은 S나 T중에 더 긴 문자열에서 겹치는걸 파악하면 된다고 생각했다.
그래서 나온 코드가
t = int(input())
for test_case in range(t):
S, T = map(str, input().split())
answer = "no"
if S == T:
answer = "yes"
if len(S) > len(T):
if S[:len(T)] == T:
answer = "yes"
else:
if T[:len(S)] == S:
answer = "yes"
였는데,
"abca, abc" 라는 반례가 있었다.
abcaabca..와 abcabc...로 no를 반환해야 하지만 내 코드는 yes를 반환한다.
그래서 각 문자열의 길이의 공배수 만큼 각각 곱해줘서 같은지를 판별하면 될까해서 코드를 바꿔봤더니 통과하였다.
t = int(input())
for test_case in range(t):
S, T = map(str, input().split())
answer = "no"
if S == T:
answer = "yes"
if len(S) * T == len(T) * S:
answer = "yes"
print(f"#{test_case+1} {answer}")