정구리의 우주정복
[BOJ] 백준 -다음순열,이전순열,모든순열 파이썬 본문
반응형
#10972 다음 순열
def next_permutation(a):
i = len(a)-1
while i > 0 and a[i-1] >= a[i]:
i -= 1
if i <= 0:
return False
j = len(a)-1
while a[j] <= a[i-1]:
j -= 1
a[i-1],a[j] = a[j],a[i-1]
j = len(a)-1
while i < j:
a[i],a[j] = a[j],a[i]
i += 1
j -= 1
return True
n = int(input())
a = list(map(int,input().split()))
if next_permutation(a):
print(' '.join(map(str,a)))
else:
print(-1)
#10973 이전 순열
def prev_permutation(a):
i = len(a)-1
while i > 0 and a[i-1] <= a[i]:
i -= 1
if i <= 0:
return False
j = len(a)-1
while a[j]>= a[i-1]:
j -= 1
a[i-1],a[j] = a[j],a[i-1]
j = len(a)-1
while i<j:
a[i],a[j] = a[j],a[i]
i += 1
j -= 1
return True
n = int(input())
a = list(map(int,input().split()))
if prev_permutation(a):
print(' '.join(map(str,a)))
else:
print(-1)
#모든 순열
def next_permutation(a):
i = len(a)-1
while i > 0 and a[i-1] >= a[i]:
i -= 1
if i <= 0:
return False
j = len(a)-1
while a[j] <= a[i-1]:
j -= 1
a[i-1],a[j] = a[j],a[i-1]
j = len(a)-1
while i < j:
a[i],a[j] = a[j],a[i]
i += 1
j -= 1
return True
n = int(input())
a = list(range(1,n+1))
while True:
print(a)
if not next_permutation(a):
break
itertools 를 사용하지 않고 직접 구하는 방법 !!! 우하하 소스코드 반복해서 사용해보며 외워둬도 좋을것같음 !
반응형
'ALGORITHM > SOLVE' 카테고리의 다른 글
[BOJ] 백준 13424-비밀모임 파이썬 다익스트라 (0) | 2021.02.06 |
---|---|
[BOJ] 백준 2437-저울 파이썬 (0) | 2021.02.05 |
[프로그래머스] 실패율 파이썬 (0) | 2021.01.07 |
[BOJ] 10825번 국영수 파이썬 (0) | 2021.01.07 |
[BOJ] 백준 1514번 잃어버린 괄호 파이썬 (0) | 2021.01.06 |
Comments