https://www.acmicpc.net/problem/11501
11501번: 주식
입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타
www.acmicpc.net
주어진 숫자들을 비교해가며 가장 많은 이익을 남겨 판매하는 것이 목표이다.
역방향 탐색으로 뒤에서부터 비교해서, 더 큰 수가 나오면 그 전 까지 판매하여 이익을 내는 식으로,
이익의 총합을 구하면 되는 문제.
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
int[] num;
for(int i=0;i<T;i++){
int N = Integer.parseInt(br.readLine());
long answer = 0;
st = new StringTokenizer(br.readLine()," ");
num = new int[N];
for(int j=0;j<N;j++)
num[j] = Integer.parseInt(st.nextToken());
int max = num[N-1];
for(int j=N-2;j>=0;j--) {
if(num[j] <= max)
answer += max - num[j];
else
max = num[j];
}
bw.write(answer + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
'개발 > Algorithm' 카테고리의 다른 글
[백준 1874 with Java] 스택수열 (0) | 2024.02.08 |
---|---|
[백준 1012 with Java] 유기농 배추 (DFS) (0) | 2024.02.04 |
[프로그래머스 with JAVA] 올바른 괄호 (0) | 2023.12.04 |
[프로그래머스] 최솟값 만들기 (0) | 2023.12.03 |
[프로그래머스] JadenCase 문자열 만들기 (0) | 2023.12.02 |
댓글