10773-0


質問する


ロコド機長の
ヒョンミンがお金を管理するのを手伝う過程で、残念なことにいつも忙しくて、ヒョンはお金を誤って呼ぶ事故をよく犯します.
宰賢は間違った数字を叫ぶたびに0を叫んで、最近の
このようにすべての数字を書いた後の数字の和を知りたい.渽民を助けましょう!

入力


最初の行は整数Kを与える.(1 ≤ K ≤ 100,000)
その後、K行に整数を与えます.整数には0~1000000の値があり、整数が0の場合は最後に書き込まれた数値が消去され、そうでない場合は対応する数値が書き込まれます.
整数が0の場合に消去できることを保証します.

しゅつりょく


民が最終的に書いた数字とを出力します.最終的に得られた数の和は231−1以下の整数である.

Solution


Python

K = int(input())
num = []
for i in range(K):
    temp = int(input())
    if temp == 0:
        num.pop()
    else:
        num.append(temp)

sum = 0
for i in num:
    sum = sum + i

print(sum)
修行時間が長すぎる.appendとpopの実行時間は長いようです.

C++

코드를 입력하세요

Java

import java.util.Scanner;
import java.util.Stack;

public class Main {

	public static void main(String[] args) {
		
		Scanner scan = new Scanner(System.in);
		int N = scan.nextInt();
		Stack <Integer> input = new Stack <>();
		int sum = 0;
		for(int i=0; i<N; i++) {
			int temp = scan.nextInt();
			if(temp == 0) {
					input.pop();
				}
			else {
				input.push(temp);
			}
		}
		while(!input.empty()) {
			sum = sum + input.pop();
		}
		System.out.println(sum);
	}

}
java.utilのStackパッケージを使用しており、実行時間が長すぎます.次のスタック問題ではこれを使わずに問題を解きましょう.
for(into:input){sum+=o}で和を求めることができます.
Pythonのfor a in listのような方法です.