백준 1464번 뒤집기 3
백준 1462번 문제는 사전순으로 가장 앞선것을 맨 앞으로 나오게 하는 문제입니다.
그래서 저는 end와 end-1의 크기비교와 end와 맨처음 문자열의 크기를 비교해서 True라면
end-1까지 뒤집어 주고. 뒤집은 다음에 다시 end와 end-1을 비교해서 end가 end-1보다 작다면 이번에는 end까지 뒤집어 주도록 했습니다.
코드는 다음과 같습니다.
#문자열을 뒤집어주는 함수
def reverse_string(left, right, iterable):
l = left
r = right-1
while l < r:
temp = iterable[r]
iterable[r] = iterable[l]
iterable[l] = temp
l += 1
r -= 1
return iterable
s = input()
s = list(s)
n = len(s)
for i in range(0, n-1):
end = i+1
# end와 end-1 크기 비교, end와 맨 처음 문자 크기 비교
if s[i] > s[end] and s[end] <= s[0]:
reverse_string(0, end, s)
#뒤집고 난 뒤 end와 end-1을 다시 비교해서 end가 더 작거나 같다면 다시한번 뒤집어 주어야함.
if s[i] >= s[end]:
reverse_string(0, end+1, s)
for el in s:
print(el, end='')