본문 바로가기

너와!나의!알고!리즘!/백준

[백준 #12871,Python] 무한 문자열

[풀이]

from math import gcd #최소 공배수
def lcm(x):
    pattern = int((len(s) / x) * (len(t) / x) * x)
    S = pattern / len(s)
    T = pattern /  len(t)
    S,T = int(S), int(T)
    return S,T

s = input()
t = input()
#abcdef ab의 경우 1로 출력
if len(s) == len(t):
    if s == t:
        answer =1
    else:
        answer = 0
else:
    x = gcd(len(s),len(t))
    S,T = lcm(x)
    fs = s * S
    ft = t *T
    if fs == ft:
        answer = 1
    else:
        answer = 0
print(answer)

🤣처음에는 길이가 긴 애의 크기만큼 짧은애를 같게 만들어서 비교하는 걸로 했는데, 그러면 길이가 2 3 처럼 안된다. 즉, 두 문자열 모두 최소공배수만큼 길이를 만들어주고 비교하면 되는데 파이썬은 내장함수로 최소공배수가 없는 것 같다..? 그래서 결국 처음으로 gcd라는 내장함수를 이용해서 최대 공약수를 구하고 다시 길이로 나눠주고,, 몫만큼 곱해서 최소공배수를 만들어준다음에 비교하는 번거로운,,방법을 사용했다.

'너와!나의!알고!리즘! > 백준' 카테고리의 다른 글

[백준 #5427, Python] 불  (0) 2021.04.06
[백준 #12904,Python] A와B  (0) 2021.03.31
[백준 #13706, Python] 제곱근  (0) 2021.03.30
[백준 #12907,Python] 동물원  (0) 2021.03.30
[백준 #16953,Python] A->B  (0) 2021.03.30