모든 순열를 구한 방법으로 아래코드처럼 구현했더니, 시간초과가 났다.
다른 풀이들을 보니, itertools를 이용해서 구했던데, 실제 코테에서 itertools를 못쓴다는 말이 있어서
고민이 많다.
num = int(input())
lit =list(map(int,input().split()))
lit.sort()
def go(lit):
total =0
for i in range(0,num-1):
cnt = lit[i] - lit[i+1]
if cnt<0:
cnt = -cnt
total += cnt
return total
t =0
ans =0
def per(lit):
global ans
n = len(lit)-1
i = n
while i>0 and lit[i-1] > lit[i]:
i -= 1
if i == 0:
return 0
t = go(lit)
if ans < t:
ans =t
j = n
while lit[i-1] > lit[j] and j>0:
j -= 1
lit[i-1],lit[j] =lit[j],lit[i-1]
j = n
while i < j:
lit[i] ,lit[j] = lit[j],lit[i]
i += 1
j -= 1
return lit
while True:
if per(lit) == 0:
print(ans)
break
if len(lit) ==2:
continue
per(per(lit))
댓글