- 생각
뒤부터 순회를 하면 max를 구하기 위해 따로 순회할 필요가 없다. 따라서 주식 배열을 돌 때 뒤에서부터 max값을 초기화 시켜주면서 max값이 아니라면 max값에서 현재 index의 주식가격을 빼주면서 반복문을 돌려주면 될 것 같다.
- 코드
정답 코드 : 뒤에서부터 반복문을 돌리는게 핵심인 것 같다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
static int T;
static StringBuilder sb;
public static void main(String[] args) throws Exception {
SetData();
//Calculate();
System.out.println(sb);
}
private static void SetData() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = null;
T = Integer.parseInt(br.readLine());
sb = new StringBuilder();
for( int i = 0 ; i < T ; i++ ) {
int N = Integer.parseInt(br.readLine());
long stocks[] = new long[N];
st = new StringTokenizer(br.readLine());
for( int j = 0 ; j < N ; j++ ) {
stocks[j] = Integer.parseInt(st.nextToken());
}
long max = 0;
long answer = 0;
for( int j = N-1 ; j >= 0 ; j-- ) {
if(stocks[j] > max) { // 현재 가격이 지금까지 젤 큰 가격이라면 바꿔줌.
max = stocks[j];
}else {
answer += max - stocks[j]; // 팔았을 때 이득을 더 해줌
}
}
sb.append(answer + "\n");
}
}
private static void Calculate(){
}
}
'algorithm' 카테고리의 다른 글
[JAVA] 백준 7570번 : 줄 세우기 (0) | 2020.12.16 |
---|---|
[JAVA] 백준 1946번 : 신입 사원 (0) | 2020.12.15 |
[JAVA] 백준 1699번 : 제곱수의 합 (0) | 2020.12.14 |
[JAVA] 백준 14651번 : 걷다보니 신천역 삼 (Large) (0) | 2020.12.11 |
[JAVA] 백준 3187번 : 양치기 꿍 (0) | 2020.12.11 |