[SW Academy] 15758. 무한 문자열

DreamJJW·2023년 9월 13일
0

SW Academy

목록 보기
21/26

문제

풀이

처음 생각한 것은 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}")


profile
간절한 사람

0개의 댓글