이 문제는 결국 각 좌석 Ai들의 합에 Ai의 최댓값과 N을 더하면 되는 문제이다.
#include <stdio.h>
int main(void)
{
int test_case;
int T;
setbuf(stdout, NULL);
scanf("%d", &T);
for (test_case = 1; test_case <= T; ++test_case)
{
int n, a, s=0, m=0;
scanf("%d", &n);
for (int i=0;i<n;i++, s+=a) {
scanf("%d", &a);
if (a>m) m=a; // 최댓값 구하기
}
printf("#%d %d\n", test_case, s+n+m); // Ai들의 합 + 개수+ Ai의 최댓값
}
return 0; //정상종료시 반드시 0을 리턴해야 합니다.
}
5 2 3 1 4
5 4 4
3 2 2 2
다음과 같은 경우의 수를 생각해서 규칙을 알아낼 수 있었다.
우선 Ai가 가장 큰 좌석이 있다면 그 옆으로 그 다음으로 가장 큰 Ai의 좌석을 배치하면 된다.
그런 식으로 한다면 위와 같은 식임을 알아낼 수 있다.
+) 아무도 못 알아보겠지만... 풀이과정
'문제풀이 > C 문제풀이' 카테고리의 다른 글
[SWEA]7728 다양성 측정 (0) | 2019.09.18 |
---|---|
[SWEA]3456 직사각형 길이 찾기 (0) | 2019.09.18 |
[SWEA]7732 시간 개념 (0) | 2019.09.17 |
[SWEA]8104 조 만들기 (0) | 2019.09.16 |
[SWEA]8457 알 덴테 스파게티 (0) | 2019.09.16 |