소스코드
n = int(input())
data = list(map(int, input().split()))
for i in range(n-1, 0, -1):
if data[i-1] < data[i]:
for j in range(n-1, 0, -1):
if data[i-1] < data[j]:
data[i-1], data[j] = data[j], data[i-1]
data = data[:i] + sorted(data[i:])
for i in data:
print(i, end=' ')
exit()
print(-1)
알고리즘
DP를 이용해서 permutations를 이용해 그 전의 리스트를 출력하려고 하여 풀면 시간초과가 나는 문제입니다;
그래서 어떤 방식이 있을까 생각해보다가 간단하게 맨 뒤에 숫자부터 시작해서 앞에 숫자보다 큰 경우 자리를 바꾼다음 출력해주면 되겠구나 하고 생각해서 풀었더니 잘 풀렸습니다.
'Coding test' 카테고리의 다른 글
[백준/6603/파이썬] 로또 (0) | 2023.01.12 |
---|---|
[백준/11723/파이썬] 집합 (0) | 2023.01.11 |
[백준/9095/파이썬] 1,2,3 더하기 - DP (0) | 2023.01.09 |
[백준/15649/파이썬]N과M(1) - 백트래킹 (0) | 2023.01.08 |
[백준/1655/파이썬]가운데를 말해요 (0) | 2023.01.07 |