✅ 백트래킹
처음 문제를 읽고 이게 무슨 소리여..ㅎㅎ..
차근차근 문제를 분해해보자.
두 위치의 숫자를 바꿔가며 최종값이 최대가 되야 한다.
즉, 두 위치를 바꿨을 때 값이 그동안의 값보다 크다면 바꿔주고 아니라면 바꾸지 않는다.
-> 최대 값을 저장해가면서 바꿔야 함
두 위치를 바꿨을 때 이전에 나왔던 수가 나오면 안된다. (또 나오면 무한 루프임;)
N은 최대 1,000,000이기 때문에 나온 모든 수들을 저장하면서 나왔는지 안나왔는지 판별할 수는 없고
중복된 수가 나왔을 때 가지치기를 해줘야 한다. -> 백트래킹 (Backtracking)
O(N^2)