2022-06-30 @이영훈
최종적으로 정리된 버전
string = input()
# 사전순으로 가장 큰 수를 미리 입력
answer = "z" * len(string)
# 세 단어로 나누기 위해서 두 번을 자름
# 시간 복잡도: O(n^2)
for i in range(1, len(string) - 1):
for j in range(i + 1, len(string)):
s1 = string[:i][::-1]
s2 = string[i:j][::-1]
s3 = string[j:][::-1]
new_string = s1 + s2 + s3
answer = min(answer, new_string) # 사전순으로 더 앞선 수를 가져옴
print(answer)
Python
복사
처음 만든 버전
•
python에서 string 비교가 min 내장 함수로 되는지 몰랐음
•
글자를 뒤집기 위해서 reversed로 map 객체를 만들고 join해서 구현 (이해가 더 쉽긴하다. pythonic 하진 않음)
string = input()
answer = "z" * len(string)
def get_alphabetic_lower_string(one, the_other):
for i in range(len(one)):
if ord(one[i]) < ord(the_other[i]):
return one
elif ord(one[i]) > ord(the_other[i]):
return the_other
return one
for i in range(1, len(string) - 1):
for j in range(i + 1, len(string)):
s1 = ''.join(reversed(string[:i]))
s2 = ''.join(reversed(string[i:j]))
s3 = ''.join(reversed(string[j:]))
new_string = s1 + s2 + s3
answer = get_alphabetic_lower_string(answer, new_string)
print(answer)
Python
복사