Baekjoon10973 - 이전 순열(Python)
백준 사이트 10973 - 이전 순열 문제입니다.
이 글을 보시기 전에 문제를 풀기 위해 충분한 생각을 하셨나요? 답을 안 보고 푸는게 최대한 고민하는게 가장 중요하다고 생각합니다.!!
☑️ 1. 문제
https://www.acmicpc.net/problem/10973
☑️ 2. Input , Output
자세한건 링크 참조..
☑️ 3. 분류 및 난이도
코딩테스트 준비-기초 : 브루트포스 - 순열 문제입니다.
☑️ 4. 생각한 것들
- 이전 문제를 통해 알고리즘을 습득하였습니다.
- 해당 알고리즘의 반대로만 진행해주면 어렵지 않게 풀 수 있습니다.
- 자세한건
다음순열
문제를 참고해주세요.
5. code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
def solution(origin, size):
i = size - 1
while i > 0 and origin[i - 1] <= origin[i]:
i -= 1
j = size - 1
while origin[j] >= origin[i - 1]:
j -= 1
origin[i - 1], origin[j] = origin[j], origin[i - 1]
j = size - 1
while (i < j):
origin[i], origin[j] = origin[j], origin[i]
i += 1
j -= 1
print(' '.join(map(str, origin)))
n = int(input())
input_str = list(map(int, input().split()))
permu_list = [_x for _x in range(1, n + 1)]
if input_str == permu_list:
print(-1)
else:
size = len(permu_list)
solution(input_str, size)
6. 후기
c++로 작성이 필요하거나 도움이 필요하시면 댓글을 작성해주세요.!! 기록용이라 설명이 자세하지 않습니다.
This post is licensed under CC BY 4.0 by the author.