시간을 단축하기 위해 배열의 맨끝에서부터 탐색을 시작했다.
예시중에서
2 3 9 1 3 4 3 9 9 7 4 2 를(<- 순으로) 살펴보았다.
왼쪽에 있는 값(3)이
오른쪽에 있는 값보다 작아지는 구간을 찾아낸다.
해당 위 배열에서는
idx 7번째가 해당되는 구간이다.
그리고 오른쪽에 있는 값(idx 7번)부터 배열의 맨끝까지를
오름차순으로 정렬한다.
그러고 난 뒤에
왼쪽에 있는값(3)보다 바로 큰 값(4)을 찾아낸 뒤
서로 스왑한다.
그리고 반복문을 종료하면 끝!
t = int(input())
for _ in range(t):
button = False
arr = list(map(int, input()))
answer = ''
for i in range(len(arr) - 1, -1, -1):
if arr[i] <= arr[i - 1]:
continue
else:
arr[i:] = sorted(arr[i:])
for idx, num in enumerate(arr[i:]):
if arr[i - 1] < num:
arr[i - 1], arr[idx + i] = arr[idx + i], arr[i - 1]
button = True
for a in range(len(arr)):
answer += str(arr[a])
print(answer)
break
if button:
break
if not button:
print("BIGGEST")
'여니의 취준 준비 > 코딩테스트 (Python)' 카테고리의 다른 글
[n12760] 최후의 승자는 누구? in python (0) | 2021.11.18 |
---|---|
[n16935] 배열 돌리기 3 in python (0) | 2021.11.09 |
[n8394] 악수 in python (0) | 2021.11.09 |
[n10384] 팬그램 in python (문자열,아스키코드) (0) | 2021.11.08 |
[n9742] 순열 in python (0) | 2021.11.08 |