본문 바로가기
Research/Python

Python_가장 긴 알파벳 정렬된 substring 찾는 코드

by RIEM 2023. 6. 6.
alphabet = 'abcdefghijklmnopqrstuvwxyz'

topLength = 0;
topString = '';


for index in range(len(s)):
    
    memory = '' # a
    for chr in s[index:]:    
        if(memory == ''):
            memory += chr
        elif(alphabet.index(memory[-1]) <= alphabet.index(chr)):
            memory += chr
        else:
            break
    
    if(len(memory) > topLength):
        topLength = len(memory)
        topString = memory
        
print(topString)

s는 input으로 들어온 스트링이다. 예를 들어 'abcdefclkwjefl'와 같다.

가장 긴 substring을 저장하기 위해 topLength와 topString으로 길이 수와 substring 자체를 저장하는 변수를 만든다. 그 다음 input 's'를 루프돌면서 memory의 가장 마지막 chr의 알파벳의 순서보다 루프를 도는 현재 chr의 알파벳 순서보다 작거나 같은 경우, chr에 덧붙여주고 그렇지 않을 경우 루프를 바로 break 걸어줌으로서 불필요한 chr이 더 쌓이는 것을 방지한다.

이 반복문이 끝나면 현재 substring이 memory에 저장되어있는데, 기존 메모리에 저장되어있는 substring보다 길이가 긴 경우 최신화해주는 방식으로 문제를 해결한다.

댓글