[백준/BOJ]21557. 불꽃놀이 [Silver 5]

jychan99·2021년 8월 25일
0
post-thumbnail
  1. 불꽃놀이

문제출처 : https://www.acmicpc.net/problem/21557

code

#include<stdio.h>
int main()
{
	int N, i, A[200000] = { 0 };
	scanf("%d", &N);
	for (i = 0; i < N; i++)
		scanf("%d", &A[i]);
	i = N - 2;
	while (i)
	{
		if (i == 1)
		{
			A[0]--;
			A[N - 1]--;
		}
		else
		{
			if (A[0] >= A[N - 1])
				A[0]--;
			else
				A[N - 1]--;
		}
		i--;
	}
	if (A[0] >= A[N - 1])
		printf("%d", A[0]);
	else
		printf("%d", A[N - 1]);
	return 0;
}

작업 과정 중간에 폭죽을 다터트리고 양옆 더미의 높이 1씩감소는 중요한조건이 아니다.
왜냐하면 어차피 나중에는 2개밖에 안남을것이고, 어차피 양쪽 끝에것만 남기 때문이다.
최솟값을 구해야하기 때문에 무조건 2번째 폭죽 아니면 N-1번째 폭죽을 쓰기 때문에
A[0]와 A[N-1]의 크기를 비교해서 더 큰쪽을 -1씩해주고, 만약 폭죽이 3개남으면 A[0],A[N-1]모두 -1을 해주는 반복문을 짜면된다.

진짜 이때까지풀면서 제일 쉽게 풀었던 것 같다. 10분도 안걸렸으니까

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글