본문 바로가기

알고리즘/구현

파이썬 | 백준 | 1251 | 단어 나누기 | 문자열 reverse

solution

임의의 두 부분 → 조합(combinations)

문자열 reverse → [string][::-1]

# 1251, 단어 나누기
import sys
from itertools import combinations

s = sys.stdin.readline().rstrip()
candidates = [i for i in range(1, len(s))]
comb_candidates = list(combinations(candidates, 2))

res = "z"*len(s)    # 사전에서 가장 뒤에 오는 문자열 임의로 설정
for comb_candidate in comb_candidates:
    split1, split2 = comb_candidate[0], comb_candidate[1]
    # [::-1] 문자열 reverse
    temp1 = s[:split1][::-1]
    temp2 = s[split1:split2][::-1]
    temp3 = s[split2:][::-1]
    temp = temp1 + temp2 + temp3

    if temp < res:
        res = temp

print(res)

 

문제 출처 www.acmicpc.net/problem/1251

 

1251번: 단어 나누기

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

www.acmicpc.net