코딩테스트

SWEA 1859 : 백만장자 프로젝트

joonwoong 2024. 2. 22. 21:25

문제.

 

알고리즘.

입력받은 줄을 뒤집어서 큰값을 max_value로 정하고 다음 큰값이 나올때까지 한칸씩 내려가면서 차이를 diff 변수에 저장한다. diff의 범위를 잘 생각해줘야하는 문제인듯

 

코드.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.ArrayList;
 
public class Solution {
 
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int T = Integer.parseInt(br.readLine());
		
		for (int t=1;t<=T;t++) {
			int N = Integer.parseInt(br.readLine());
			int[] arr = new int[N];
			
			String line = br.readLine();
			StringTokenizer st = new StringTokenizer(line, " ");
			
			for(int j=0; st.hasMoreTokens();j++) {
				arr[j] = Integer.parseInt(st.nextToken());
			}
			
			int len = arr.length;
			int max_value = 0;
			long benefit = 0;
			
			for(int k=len-1;k>=0;k--) {
				if(arr[k] > max_value) {
					max_value = arr[k];
				}
				benefit += max_value-arr[k];
			}
			System.out.printf("#%d %d\n",t, benefit);
		}
		br.close();
	}
}

 

결과.

 

소감.

변수의 범위를 조금만 잘못하면 오류가 발생하는 문제임. 생각보다 침착했다.

'코딩테스트' 카테고리의 다른 글

SWEA 1213 : String  (0) 2024.03.05
SWEA 2005 : 파스칼의 삼각형  (0) 2024.02.23
SWEA 2072 : 간단한 369게임  (0) 2024.02.22
백준 2751 : 수 정렬하기 2  (0) 2024.02.21
백준 1018번 : 체스판 다시 칠하기  (0) 2024.02.21