티스토리 뷰

문제 링크 : https://www.acmicpc.net/problem/27973

🍊해결방법

  • 제일 작은 수만 신경 쓰면 된다
  • left = 1로 젤 작은 수 시작
  • 문제에서 주어지는 연산을 모와뒀다가 한번에 해주자
  • 더하기와 곱하기 변수를 이용해 최종 결과값을 저장하자
  • 곱하기를 할때에도 더하기 변수를 곱해줘야 한다!!
  • 제거할 때는 left를 해당 수 만큼 더해줘서 몇번째 수 인지 갱신하자
  • 마지막에 left에 곱하기 최종을 먼저 곱하고 더하기 최종을 더해주자

😀풀이

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

public class Main {



    public static void main(String[] args) throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int Q = Integer.parseInt(br.readLine());

        long left = 1;

        StringBuilder sb = new StringBuilder();

        long plus = 0;
        long mul = 1;

        for(int q=0; q<Q; q++){

            StringTokenizer st = new StringTokenizer(br.readLine());

            int order = Integer.parseInt(st.nextToken());

            // 더하기
            if(order == 0){
                int num = Integer.parseInt(st.nextToken());
                plus += num;
            }
            // 곱하기
            else if(order == 1){
                int num = Integer.parseInt(st.nextToken());
                plus *= num;
                mul *= num;
            }
            // 제거
            else if(order == 2){
                int num = Integer.parseInt(st.nextToken());

                left += num;
            }
            // 출력
            else{

                long ans = left;

                ans = left * mul + plus;

                sb.append(ans+"\n");
            }


        }

        System.out.println(sb);


    }// end main




}