문제풀이/BOJ

[Python] BOJ/백준 1251번 단어 나누기

서채리 2021. 6. 28. 23:37

[문제]

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

 

1251번: 단어 나누기

알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다

www.acmicpc.net

 


[풀이]

단어 각각의 길이가 1 이상이어야 하기 때문에 첫 번째 단어는 len(s)-2까지, 두 번째 단어는 그다음부터 len(s)-1까지, 세 번째 단어는 len(s)까지 검사한다. 변수 temp에 순서대로 슬라이싱 해 역순으로 넣고 temp를 voca 리스트에 추가한다.

 

list를 출력하면 ['moletib', 'mboleti', 'mibolet', 'mtibole', 'metibol', 'ombleti' ••] 이런 식으로 조합 가능한 모든 문자열이 나오는데 사전 순으로 가장 앞서는 단어를 출력해야 되기 때문에 min(voca)를 출력한다.

 


[코드]

if __name__ == '__main__':
    s = input()
    voca = []

    for i in range(len(s)-2):
        for j in range(i+1, len(s)-1):
            for k in range(j+1, len(s)):
                temp = s[:j][::-1] + s[j:k][::-1] + s[k:][::-1]
                voca.append(temp)

    print(min(voca))