반응형
문제
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;
}
반응형
'프로그래밍 > 백준(BOJ)' 카테고리의 다른 글
[백준(BOJ) / C][Silver Ⅳ] 10773번 : 제로 (0) | 2024.01.04 |
---|---|
[백준(BOJ) / C][Silver Ⅳ] 9012번 : 괄호 (1) | 2024.01.03 |
[백준(BOJ) / C][Bronze Ⅱ] 1152번 : 단어의 개수 (1) | 2024.01.03 |
[백준(BOJ) / C][Silver Ⅳ] 1158번 : 요세푸스 문제 (1) | 2024.01.02 |
[백준(BOJ) / C][Silver Ⅴ] 7568번 : 덩치 (1) | 2024.01.01 |