본문 바로가기
acmicpc/Java

[JAVA] 백준 10773 제로

by 952_hi 2022. 3. 21.

https://www.acmicpc.net/problem/10773

 

10773번: 제로

첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경

www.acmicpc.net


https://solved.ac/search?query=in_class:2

클래스 2 문제집 모음

 

solved.ac - 검색

 

solved.ac

 

백준 클래스 2++ 도전기

매번 추천 문제나 골드문제를 골라서 풀었는데 solved.ac 사이트를 구경하다가 클래스를 발견해서 단계를 올려보고자

하루 한번 클래스2 문제를 포스팅하기로 결정했습니다 ^^;  달성할때까지 달려보겠습니다 ㅎㅎㅎ

 

풀이과정

 

1일차에 푼 문제는 제로라는 문제입니다.

 

이문제는 N만큼의 수를 입력받아 합을 출력해주는 문제지만 제약조건이 있습니다.

0을만나면 가장최근의 수를 지우는 것입니다.

 

가장최근의 수를 지운다는것을 읽자마자 스택이구나라고 생각했고 최대 10만개의 수가 들어와

입력 * 합    n*n 일때도 시간안에 들어갈거라고 생각했습니다.

 

import java.io.*;
import java.util.*;
public class boj10773 {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
		Stack<Integer> q = new Stack<>();
		int comp = 0;
		for(int i=0;i<n;i++) {
			comp = Integer.parseInt(br.readLine());
			if(comp == 0) {
				if(q.isEmpty()) continue;
				else q.pop();
			}else {
				q.add(comp);
			}
		}
		int sum = 0;
		while(!q.isEmpty()) {
			sum += q.pop();
		}
		System.out.println(sum);
	}
}

어려운 부분은 없고 아이디어를 얼마나 빨리 떠올리느냐 차이일것같습니다.

'acmicpc > Java' 카테고리의 다른 글

[Java] 백준 2164 카드2  (0) 2022.03.27
[JAVA] 백준 4153 직각삼각형  (0) 2022.03.24
[JAVA] 2206 벽 부수고 이동하기  (0) 2022.03.24
[JAVA] 2805 나무 자르기  (0) 2022.03.23
[Java] 백준 1300 K번째 수  (0) 2022.03.19

댓글