잡동사니/[2022] 회로이론
[백준/C] 10773번 제로
heylo
2022. 12. 11. 02:23
https://www.acmicpc.net/problem/10773
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define MAX_STACK_SIZE 100001
typedef struct element {
int key;
}element;
int top = -1;
element stack[MAX_STACK_SIZE];
int exist(element item) { // item이 stack에 존재하는지 확인하는 함수
for (int i = 0; i <= top; i++) {
if (stack[i].key == item.key) {
return 1; // 이미 stack에 존재한다
}
}
return 0;
}
int push(element item) {
stack[++top] = item;
}
element pop(void) {
return stack[top--];
}
// 스택 프린트 함수
void printStack(void) {
for (int i = 0; i <= top; i++) {
printf("stack[%d] = %d\n", i, stack[i].key);
}
}
void sumPrint(void) {
int sum = 0;
for (int i = 0; i <= top; i++) {
sum += stack[i].key;
}
printf("%d", sum);
}
int main(void) {
int k, n; // k: 정수 개수, n: 정수
int i; // 반복
element item; // push할 item
scanf("%d", &k);
for (i = 0; i < k; i++) {
scanf("%d", &n);
if (n == 0) pop();
else {
item.key = n;
push(item);
}
}
sumPrint();
return 0;
}
아래 틀린 코드 (왜 틀렸는지 아직 모르겠다)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#define MAX_STACK_SIZE 100001
typedef struct element {
int key;
}element;
int top = -1;
element stack[MAX_STACK_SIZE];
int exist(element item) { // item이 stack에 존재하는지 확인하는 함수
for (int i = 0; i <= top; i++) {
if (stack[i].key == item.key) {
return 1; // 이미 stack에 존재한다
}
}
return 0;
}
int push(element item) {
stack[++top] = item;
}
element pop(void) {
return stack[top--];
}
void topElement(void) {
printf("%d", stack[top].key);
}
/*
// 스택 프린트 함수
void printStack(void) {
for (int i = 0; i <= top; i++) {
printf("stack[%d] = %d\n", i, stack[i].key);
}
}
*/
void sumPrint(void) {
int sum = 0;
while (top != -1) {
sum += pop().key;
}
printf("%d", sum);
}
int main() {
int k, n; // k: 정수 개수, n: 정수
int i; // 반복
element item; // push할 item
scanf("%d", &k);
for (i = 0; i < k; i++) {
scanf("%d", &n);
if (n == 0) pop();
else {
item.key = n;
if (!exist(item))
push(item);
}
}
sumPrint(); // 합계 출력
return 0;
}