CodingTest/Baekjoon

[baekjoon] 백준 1251번(파이썬): 단어 나누기

JunJangE 2022. 1. 12. 01:37

문제

 

1251번: 단어 나누기

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

www.acmicpc.net

알고리즘

- 반복문을 통해 세 개의 단어로 자를 수 있는 모든 경우의 단어를 구한다.

- 모든 경우의 단어를 뒤집은 후 다시 원래 순서로 합친 후 리스트에 추가한다.

- 사전 순으로 가장 앞선 단어를 출력하기 위해 리스트에서 제일 작은 단어를 출력한다. 

코드

import sys

word = list(map(str, sys.stdin.readline().rstrip("\n")))
res = []

# 반복문을 통해 세 개의 단어로 자른다.
for i in range(1, len(word) - 1):
    for j in range(i + 1, len(word)):
        first = word[:i] # 첫 번째 단어
        second = word[i:j] # 두 번째 단어
        third = word[j:] # 세 번째 단어

        # 각 단어를 뒤집는다.
        first.reverse()
        second.reverse()
        third.reverse()

        # 뒤집은 단어를 원래 순서로 합친 후 리스트에 추가
        res.append("".join(first + second + third))

# 사전 순으로 가장 앞선 단어를 출력하기 위해
# 리스트에서 제일 작은 단어를 출력
print(min(res))

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com