Hanbit the Developer

[Python] 백준 3356번: 라디오 전송 본문

Algorithm/백준

[Python] 백준 3356번: 라디오 전송

hanbikan 2021. 8. 27. 18:16

https://www.acmicpc.net/problem/3356

 

3356번: 라디오 전송

첫째 줄에 S의 길이 L이 주어진다. 둘째 줄에는 길이가 L인 S가 주어진다. 메시지는 알파벳 소문자로만 이루어져 있다. (1 ≤ L ≤ 1,000,000)

www.acmicpc.net

 

import sys
input = sys.stdin.readline


def get_pi(string):
    string_length = len(string)
    pi = [0]*string_length
    j = 0

    for i in range(1, string_length):
        while j > 0 and string[i] != string[j]:
            j = pi[j-1]

        if string[i] == string[j]:
            j += 1
            pi[i] = j

    return pi


if __name__ == '__main__':
    L = int(input())
    S = str(input().rstrip())

    pi = get_pi(S)
    print(L - pi[-1])

 

아래 문제와 완전히 같으며, 설명은 생략한다.

 

https://rccode.tistory.com/entry/Python-%EB%B0%B1%EC%A4%80-1305%EB%B2%88-%EA%B4%91%EA%B3%A0

 

[Python] 백준 1305번: 광고

https://www.acmicpc.net/problem/1305 1305번: 광고 세준이는 길 한가운데에서 전광판을 쳐다보고 있었다. 전광판에는 광고가 흘러나오고 있었다. 한참을 전광판을 쳐다본 세준이는 이 광고가 의미하는 것

rccode.tistory.com