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 |