Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

최's 먹공로그

SW expert Academy 1859_백만 장자 프로젝트 본문

APS

SW expert Academy 1859_백만 장자 프로젝트

ChoiSH313 2019. 2. 3. 17:34

https://www.swexpertacademy.com/main/code/problem/problemDetail.do

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.StringTokenizer;
 
/**
 * 1859. 백만 장자 프로젝트 
 */
public class Z23_SWExpert1859_백만장자프로젝트 {
    
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int TC = Integer.parseInt((br.readLine().trim())); // trim : 문자열 앞뒤에 whitespace (공백 , 탭, 줄바꿈) 제거
        
        for (int t = 1; t <= TC; t++) {
            int N = Integer.parseInt((br.readLine().trim())); // 3
            StringTokenizer st = new StringTokenizer(br.readLine(), " "); // split 대신 쓰는거 더 빠름 , 10 7 6
            
            int[] arr = new int[N];
            for (int i = 0; i < N; i++) {
                arr[i] = Integer.parseInt((st.nextToken())); // arr = {10, 7, 6}
            }
            
            long sum = 0// 마진의 누적합을 저장할 변수(최악의 경우 값의 범위를 고려해서 변수타입지정)
            int max = 0// 매매가의 최대값을 저장할 변수
            for (int i = N-1; i >= 0; i--) { // 뒤에서 부터 시작
                if(max < arr[i]) { // 구매x , 뒤에서 앞으로 갈때 앞에 값이 계속 더 크면 구매 안해야됨
                    max = arr[i];
                } else { // 최대값이 아닌 경우
                    int num = max - arr[i]; // 현재의 마진
                    sum += num; // 누적
                }
            }
            System.out.println("#" + t + " " + sum);
            
        } // end of t
    } // end of main
}
    /*public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        sc.nextLine();
        int TC = sc.nextInt();
        for (int t = 1; t <= TC; t++) {
            int N = sc.nextInt();
            int[] arr = new int[N];
            for (int i = 0; i < N; i++) {
                arr[i] = sc.nextInt();
            }
            
            long sum = 0; // 마진의 누적합을 저장할 변수(최악의 경우 값의 범위를 고려해서 변수타입지정)
            int max = 0; // 매매가의 최대값을 저장할 변수
            for (int i = N-1; i >= 0; i--) { // 뒤에서 부터 시작
                if(max < arr[i]) { // 구매x
                    max = arr[i];
                } else { // 최대값이 아닌 경우
                    int num = max - arr[i]; // 현재의 마진
                    sum += num; // 누적
                }
            }
            System.out.println("#" + t + " " + sum);
            
        } // end of t
    } // end of main
*/
// } // end of class
 
cs