알고리즘

[백준 11501 JAVA] 주식

begong 2024. 3. 14. 12:43
반응형

 

그리디 알고리즘 문제

 

이문제의 접근방법은 앞에서부터 탐색할 것이 아니라, 뒤에서부터 탐색을 하는것이다.

매수점을 찾아 기준을 잡고, 그 앞의 매입점들과의 차이를 구해서 더해주면 된다.

 

마이너스가 될 일은 없다. 뒤에서부터 탐색을해 항상 최대치를 기준으로잡기때문에 조금이라도 높을때엔 사지않는다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        int N;
        StringTokenizer st;
        int[] arr;
        while (T-- > 0) {
            N = Integer.parseInt(br.readLine());
            st = new StringTokenizer(br.readLine());
            arr = new int[N];
            for (int i = 0; i < N; i++) {
                arr[i] = Integer.parseInt(st.nextToken());
            }
            long answer = 0;
            int max = Integer.MIN_VALUE;
            for (int i = N - 1; i >= 0; i--) {
                if (max < arr[i]) {
                    max = arr[i];
                }
                answer += max - arr[i];
            }
            System.out.println(answer);
        }
    }
}
반응형

'알고리즘' 카테고리의 다른 글

[백준 4179 JAVA] 불!  (0) 2024.03.17
[백준 7576 JAVA] 토마토  (0) 2024.03.14
[백준 23818 JAVA] 원수의 원수  (5) 2024.03.12
[백준 19238 JAVA] 스타트 택시  (2) 2024.03.12
[백준 2637 JAVA] 장난감 조립  (0) 2024.03.11