프로그래밍/백준(BOJ)

[백준(BOJ) / C][Silver Ⅴ] 25644번 : 최대 상승

데굴데굴이 2024. 1. 3. 19:39
반응형

문제

https://www.acmicpc.net/problem/25644

 

25644번: 최대 상승

미래를 예측하는 능력이 있는 정균이는 앞으로 $N$일간 ANA 회사의 주가가 어떻게 변하는지 정확히 예측할 수 있다. 정균이는 예측한 결과를 바탕으로 ANA 회사의 주식 한 주를 적당한 시점에 사고

www.acmicpc.net


풀이

간단하게 ( 큰 수 - 작은 수 ) 의 결과를 출력하면 되는 문제입니다.

 

근데 조심해야할것은 ( 나중에 나온 큰수 - 처음 나온 작은 수 ) 의 계산을 여러번 하게되는데 '최대'한 이득을 보는 값을 출력하는 것이니.

 

현재 이득 값보다 크다면 result 값에 넣고 같거나 작으면 넣을필요가 없기때문에 삼항연산자를 사용하여 처리합니다.  


소스코드

#include <stdio.h>

int main(void)
{
	int days = 0, max = 0, min = 0, result = 0;
	int num;
	
	scanf("%d", &days);
	
	// 첫 값은 미리 계산합니다.
	// for문에서 if(num == 0) 을 사용해서 처리할수는 있지만 for문 반복할때마다
	// if문을 거치는건 불필요하다 생각하기떄문에 따로 빼놨습니다.
	scanf("%d", &num);
	min = num;
	
	// 첫 값을 뺐으니 계산 횟수에서 -1 를 합니다.
	for(int i = 0; i < days-1; i++)
	{
		scanf("%d", &num);
		
		// 만약 값이 최솟값보다 작다면
		if(num > min) 
		{
			// 최대값에 num을 넣고 최솟값과 최대값 차이가 기존 result 보다 크다면
			// result에 대입하고 아니라면 안넣습니다.
			max = num;
			result = result > max - min ? result : max-min;
		}
		// 만약 값이 최솟값보다 작다면
		else if(num < min)
		{
			// 현재 최솟값을 num으로 지정합니다.
			min = num;
		}
	}
	
	// 결과값을 출력합니다.
	printf("%d", result);
	
	return 0;
}
반응형