제로 (백준 10773번)

박영준·2023년 5월 23일
0

코딩테스트

목록 보기
142/300

메모

/*
잘못된 수를 부를 때마다 0 -> 가장 최근에 쓴 수 지우기

첫 번째 줄 : 정수 K
.
.
.
K개의 줄 : 정수가 1개씩

정수가 "0" 일 경우 : 가장 최근에 쓴 수 지우기
아닐 경우 : 해당 수 쓰기

받아 적은 모든 수의 합?
*/

해결법

방법 1

import java.util.Stack;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		Stack<Integer> stack = new Stack<Integer>();
		
		int K = Integer.parseInt(br.readLine());		// 형 변환
		
        // 스택 내 데이터 삭제 및 입력
		for (int i = 0; i < K; i++) {
			int number = Integer.parseInt(br.readLine());		// 정수 입력
			
			if (number == 0) {		// 0 이라면, 스택에 저장된 top 원소(마지막 데이터, 가장 위의 데이터)를 삭제
				stack.pop();
			} else {				// 아니라면, 데이터 입력(넣기, 쌓기)
				stack.push(number);
			}
		}
        
        // 스택에 남은 수들의 합
		int sum = 0;
		
		for (int a : stack) {
			sum += a;
		}
 
		System.out.println(sum);		
	}
 
}

제로 (백준 10773번)

profile
개발자로 거듭나기!

0개의 댓글