N 개의 수를 오름차순 정렬하고 왼쪽으로 필요한 좌석 수(cur - bc) + 1(현재 내가 앉을 좌석) + 오른쪽으로 필요한 좌석 수(cur)로 필요한 전체 좌석수의 최솟값을 구해줄 수 있다.
cur -> N 개의 수를 순회할 때 현재의 Ai 값
bc -> 현재 내 왼쪽으로 이미 확보된 빈 좌석(이전에 앉은 사람으로 인해 왼쪽이 Ai-1만큼 떨어져 있는 상태)
import java.util.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
StringBuffer sb = new StringBuffer();
int T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
sb.append("#").append(tc).append(" ");
int N = sc.nextInt();
ArrayList<Integer> list = new ArrayList<>();
for(int i = 0; i < N; i++) {
list.add(sc.nextInt());
}
Collections.sort(list);
int bc = 0;
int seatCount = 0;
for(int i = 0; i < N; i++) {
int cur = list.get(i);
seatCount += (cur - bc) + 1 + cur;
bc = cur;
}
sb.append(seatCount).append("\n");
}
System.out.println(sb);
}
}