본문 바로가기
CodingTest/백준

[c++] 백준 - 10773: 제로

by Daybreak21 2023. 5. 21.

10773번: 제로 (acmicpc.net)

 

10773번: 제로

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

www.acmicpc.net

 

배열과 if문을 사용하며 푼 코드

#include <iostream>
using namespace std;

int main() {

	int K, tmp, index = -1, sum = 0; cin >> K;
	int* num = new int[K]; 
	for (int i = 0; i < K; i++) {
		cin >> tmp;

		if (tmp == 0) {
			num[index] == 0;
			index--;
		}
		else {
			index++;
			num[index] = tmp;
		}
	}

	for (int i = 0; i <= index; i++) sum += num[i];
	cout << sum;

	return 0;
}

 

 

 

깨달음을 얻고 스택을 이용한 코드 

#include <iostream>
using namespace std;

int top = -1;
int Num[100000];

void push(int e) {
	Num[++top] = e;
}
int pop() {
	return Num[top--];
}

int main() {

	int K, tmp, sum = 0; cin >> K;

	for (int i = 0; i < K; i++) {
		cin >> tmp;
		
		if (tmp == 0) pop();
		else push(tmp);
	}

	for (int i = 0; i <= top; i++) sum += Num[i];
	cout << sum;

	return 0;
}

 

스택을 동적할당으로 생성할순없을까..?? 왜 자꾸오류가뜨지

'CodingTest > 백준' 카테고리의 다른 글

[c++] 백준 - 4153: 직각삼각형  (0) 2023.05.26
[c++] 백준 - 1991: 트리 순회  (0) 2023.05.24
[c++] 백준 - 8979번: 올림픽  (0) 2023.05.21
[c++] 백준 - 2577: 숫자의 개수  (0) 2023.05.21
[c++] 백준 - 2816: 디지털 티비  (0) 2023.05.20