[JAVA] SWEA 8500 - 극장 좌석

hyng·2022년 5월 9일
0

SWEA

목록 보기
74/78

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);
    }
}
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글