꼭 누굴 뽑았는지 알지 못해도, 자신을 기준으로 왼쪽에 몇명, 오른쪽에 몇명있는지를 계산할 수 있다면
동적계획법을 이용할 수 있습니다.
한가지 예를 들어보겠습니다.
5개의 숫자 1 2 3 4 5 가 있다고 할 때, 처음 두 수로 2, 4를 골랐다고 가정하면,
4의 왼쪽의 수는 1 2 3 중 2를 제외한 2개가 됩니다.
4의 오른쪽 수는 5로 1개가 되구요.
그 다음 수를 고를 땐, 2->4 였으므로, 4보다 작은 숫자를 골라야 하기 때문에 4의 왼쪽의 수 중 하나를 택하면 됩니다.
4의 왼쪽의 2개가 실제로 무슨 숫자였는지 몰라도, 그 다음 뽑을 숫자의 왼쪽과 오른쪽 수의 개수를 구할 수 있습니다.
만약 제일 왼쪽의 숫자를 고르면 그 숫자의 오른쪽 숫자는 4일 때 1개 였고, 4와 제일 왼쪽의 숫자 사이에 1개가 존재하기 때문에
다음 숫자의 왼쪽 숫자는 0개, 오른쪽 숫자는 2개가 됨을 알 수 있지요.
chatterboy 8년 전
어떻게 접근해야 할지 모르겠어요.
현재까지 뽑은 수인지 확인하는 배열 picked[N] 없이 어떻게 해야할까요?