728x90

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc&categoryId=AV5LrsUaDxcDFAXc&categoryType=CODE&problemTitle=1859

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이 방법

수정중..

 

주의할 점

1. 숫자의 크기가 int범위를 넘어갈 수 있으므로 long 타입으로 사용한다!

 

JAVA 코드

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

public class Solution {
	static StringTokenizer st;
	static StringBuilder sb=new StringBuilder();
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int T=Integer.parseInt(br.readLine());
		for (int t = 1; t < T+1; t++) {
			long result=0;
			int N=Integer.parseInt(br.readLine());
			long[] list=new long[N+1];
			st = new StringTokenizer(br.readLine());
			for (int i = 1; i < N+1; i++) {
				int price = Integer.parseInt(st.nextToken());
				list[i]=price;
			}
			long cnt=0;
			long buy=0;
			for (int j = N; j > 1; j--) {
				long current=list[j];
				for (int i = j-1; i >0; i--) {
					if(i==1) {
						if(current>list[i]) {
							cnt++;
							buy+=list[i];
						}else {
							j=i+1;
							break;
						}
						result+=(cnt*current)-buy;
						j=i+1;
					}else {
						if(current>list[i]) {
							cnt++;
							buy+=list[i];
						}else {
							result+=(cnt*current)-buy;
							cnt=0;
							buy=0;
							j=i+1;
							break;
						}
					}
				}
			}
			sb.append("#").append(t).append(" ").append(result).append("\n");
		}
		System.out.println(sb);
	}
}

원재야 사재기 그만해...

728x90

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

[JAVA] SWEA 7465 창용 마을의 무리의 갯수  (0) 2021.08.24
[JAVA] SWEA 3289 서로소 집합  (0) 2021.08.24
[JAVA] SWEA 1238 Contact  (0) 2021.08.23
복사했습니다!