본문 바로가기

Algorithm

삼성SW 1859. 백만 장자 프로젝트

반응형

문제 출처 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc

 

 

result 값이 억단위를 초과할 수 있으므로 long으로 생성하는 것과

앞으로 배열을 만들 때는 항상 동적 할당 사용하기. -> 런타임 오류 방지

배열 생성은 컴파일 타임에 이뤄지고 cin으로 받아오는것은 런타임에 이뤄지므로 배열이 런타임보다 전에 만들어 지게 되는데 값이 없는 변수를 참조하게 되므로 오류가 발생. 근데 지원하긴 해서 어찌저찌 돌아가는데 오류날 가능성 多

 

알고리즘은 간단하다 어차피 전날의 시세는 다음날에 영향을 못미치므로 마지막 날의 시세를 기준으로 첫날까지 가면서

자신보다 전날 시세가 높다면 전날은 자신으로 인해 이득을 본 것이 없으므로 그냥 max를 전날 가격으로 바꿔주고

만약 자신이 크다면 전 날은 자신의 가격에서 전 날의 가격차만큼의 이득을 보게 되므로 뺀 값을 result에 더 해 주면 끝.

 

#include <iostream> 

using namespace std;



int tc;


int main(void)
{


cin >> tc;


for(int t = 1; t <= tc; t++)
{







long N;
long result = 0;

cin >> N;
long *arr = new long[N];


for(int i = 0; i<N; i++)
{
cin >> arr[i];
}




    long max = arr[N-1];


for(int j = N-2; j >= 0 ; j--)
{

if(max <arr[j])
{
max = arr[j];

}
else if(max > arr[j])
{
result += max - arr[j];
}
}








cout<<"#"<<t<<" "<<result<<endl;








}
}

 

 

반응형

'Algorithm' 카테고리의 다른 글

1206. [S/W 문제해결 기본] 1일차 - View  (0) 2019.12.13
백준 5525번 IOIOI  (0) 2019.11.18
백준 2841번 외계인의 기타연주  (0) 2019.11.14
백준 12764번 싸지방에 간 준하 (GG)  (0) 2019.11.12
백준 7569번 토마토  (0) 2019.11.11