[SW Expert Academy] 1859. 백만 장자 프로젝트

김상욱·2024년 7월 3일
0

문제

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&problemLevel=2&contestProbId=AV5LrsUaDxcDFAXc&categoryId=AV5LrsUaDxcDFAXc&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1

Java 풀이

import java.util.*;
import java.lang.*;
import java.io.*;

class Solution {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        long tc=sc.nextInt();
        for(int i=1;i<=tc;i++){
            int n=sc.nextInt();
            long stack=0;
            long total=0;
            long max_value=0;
            int[] arr=new int[n];
            for(int j=0;j<n;j++){
                arr[j]=sc.nextInt();
            }
            for(int j=n-1;j>=0;j--){
                if(arr[j]>max_value){
                    total+=(stack*max_value);
                    stack=0;
                    max_value=arr[j];
                }else{
                    stack+=1;
                    total-=arr[j];
                }
            }
            if(stack>0){
                total+=stack*max_value;
            }
            System.out.printf("#%d %d\n",i,total);
        }
    }
}

내 생각


python 풀이

for tc in range(1,int(input())+1):
    stack=0
    total=0
    max_now=0
    n=int(input())
    arr=list(map(int,input().split()))
    for i in range(n-1,-1,-1):
        if max_now<arr[i]:
            total+=max_now*stack
            stack=0
            max_now=arr[i]
        else:
            stack+=1
            total-=arr[i]
    if stack>0:
        total+=stack*max_now
    print("#"+str(tc)+" "+str(total))

내 생각

0개의 댓글