rueki

SW Expert Academy 8500. 극장 좌석 본문

C, C++ 문제풀이

SW Expert Academy 8500. 극장 좌석

륵기 2020. 4. 15. 19:47
728x90
반응형

문제링크 :

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWz5yIfq74QDFARQ&categoryId=AWz5yIfq74QDFARQ&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

#include <iostream>
using namespace std;

int main()
{
	int T;
	cin >> T;
	for (int t = 1; t <= T; t++)
	{
		int N = 0, max = 0;
		int result = 0;
		cin >> N;
		int* arr = new int[N];
		for (int i = 0; i < N; i++)
		{
			cin >> arr[i];
			if (max < arr[i])
			{
				max = arr[i];
			}
			result += arr[i] + 1;
		}
		result += max;
		cout << "#" << t << ' ' << result << '\n';
		delete[] arr;

	}

}

 

극장 자리의 최소 자리의 개수를 찾는 문제이다.

 

2번이 들어왔을 때는 최소 5개의 자리가 필요하고

3번은 최소 7개의 자리가 필요하지만, 이들이 나란히 앉을 때 중복되는 자리를 빼야 최소의 자리수가 나온다

예를 들면 0 을 빈 자리라고 하고

2번과 3번이 들어왔을 때,

 

0 0 2 0 0

        0 0 0 3 0 0 0

 

위와 같은 구조를 띄게 되며 일렬로 나열하면 아래와 같다.

0 0 2 0 0 0 3 0 0 0

 

이랬을 때, (0 0 2 + 0 0 0 3)을 하고 나면 남는 빈자리는 3개인데, 이 수는 N번 에서 N과 같기에

각 입력 숫자를 더하고 최대값으로 들어온 숫자를 넣으면 최소자리 계산이 된다.

 

728x90
반응형

'C, C++ 문제풀이' 카테고리의 다른 글

프로그래머스- 타겟넘버(DFS)  (0) 2020.10.21
이진트리 순회  (0) 2020.10.06
SW Expert Academy 8673. 코딩 토너먼트1  (0) 2020.04.14
SW Expert Academy 8821. 적고 지우기  (0) 2020.04.12
SW Expert Academy 8931. 제로  (0) 2020.04.07
Comments