BOJ
[백준/BOJ] python 10982번 다음 순열
kyj0015
2024. 1. 20. 18:27
언어: python
번호: 10972
제목: 다음 순열
등급: 실버 3
풀이 과정: 일단 숫자 n과 순열 arr를 입력받는다. arr은 가장 뒤의 숫자부터 2개씩 비교를 하면서 다음 순열을 찾는다. 예를 들어 [1, 3, 4, 2]라는 순열의 다음 숫자를 찾기 위해서는 [4, 2] -> [3, 4] -> [1, 3]의 순서로 비교를 해야한다. 비교할때 앞에 있는 숫자가 더 작으면 두개의 위치를 교환한다. 그리고 교환한 숫자의 뒤를 정렬한다.
[1, 3, 4, 2] : 뒤에서부터 4와 2를 비교했는데 앞의 숫자가 더 크니까 그래도 둔다.
[1, 3, 4, 2] : 그 다음인 3과 4를 비교했는데 앞의 숫자가 더 작으니 둘의 위치를 교환한다.
[1, 4, 3, 2] : 위치를 바꾼 뒤 앞의 숫자인 4를 기준으로 뒤를 정렬한다.
[1, 4, 2, 3] : 다음 순열을 출력한다.
코드:
# 10972
n = int(input())
arr = list(map(int, input().split()))
for i in range(n-2, -1, -1):
if arr[i] < arr[i+1]:
for j in range(n-1, i, -1):
if arr[i] < arr[j]:
arr[i], arr[j] = arr[j], arr[i]
arr[i+1:] = sorted(arr[i+1:])
print(*arr)
break
break
else:
print(-1)
메모:
exit()으로 종료하려 했는데 잘 안되서 break문과 for else문을 썼다.