본문 바로가기
공부

BOJ 10773 해결과 개선

by 뜨응 2022. 1. 13.

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

 

10773번: 제로

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

www.acmicpc.net

오늘의 문제... 정말 간단했던 것 같다. 기본적인 stack연산만 알면 쉽게 풀 수 있는 문제다.
최근에 이렇게 아무 고민 없이 풀었던 문제는 없던 것 같은데... 최단 시간에 푼 문제..단 15분.
나중에 내가 이 문제를 보고 다시 푼다면 이 글을 보고 비웃을 수도 있겠다.
그 때는 좀 더 빨리 풀 수 있지 않을까?

코드

#include<iostream>
#include<stack>
#include<algorithm>

using namespace std;

int k , n ,a , s;
stack<int>v;

int main() {

	cin.sync_with_stdio(0);
	cin.tie(0);

	cin >> n ;

	for (int i = 0; i < n; i++) {
		
		cin >> a;
		if (a == 0 && !v.empty()) {
			v.pop();
		}
		else
			v.push(a);
	}
	s = v.size();
	for (int i = 0; i < s; i++) {
		k += v.top();
		v.pop();
	}
	cout << k;
}
  • 아직 익숙하지 않은 것인지 stack과 vector연산이 살짝 헷갈렸다.. ㅎ 
  • stack 은 push , vector 는 push_back 왜 다르게 만든걸까..
  • 뭘 더 개선하면 좋을지 이 코드는 잘 감이 안 온다. 
JAVA 공부도 해야지..

화이팅!

'공부' 카테고리의 다른 글

나의 휴학 계획을 세우다.  (5) 2022.03.02
BOJ 14425 해결 그리고 시간초과  (0) 2022.01.16
BOJ 11004 해결, 시간 초과  (0) 2022.01.13
BOJ 9012 해결과 고찰.....(최악)  (0) 2022.01.12
BOJ 11365 3가지 풀이와 고찰  (0) 2022.01.10