소스 코드

from itertools import combinations

# input 값
word = str(input())
# 조합하기 위한 리스트
# asdfg 인 경우, a와s 사이의 인덱스 값은 1
items = [_ for _ in range(1,len(word))]
# 조합
combi = list(combinations(items,2))
# 만들어진 단어 넣을 빈 리스트
res = []

for q in combi:
    # 이번에 뽑은 조합으로 만들 단어
    tmp_word = ''
    # 자를 위치를 선택
    l,r = q
    # 단어 만들기
    tmp_word += word[:l][::-1]
    tmp_word += word[l:r][::-1]
    tmp_word += word[r:][::-1]
    # res에 만들어진 단어 추가
    res.append(tmp_word)

# 정렬
res.sort()
print(res[0])

 


해결 방법

1. 조합을 통해 단어를 자를 위치를 선택한다

2. for문을 통해 만든 1에서 선택한 위치를 기준으로 단어를 자르고, 붙이면서 새 단어를 만든다

3. 만들어진 단어의 리스트(res)를 정렬해서 가장 앞에있는 단어를 출력한다


느낀 점

 

 

ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.

 

오류적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.

 

혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.