기록
[백준/C] 10773번 제로 본문
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;
}
'잡동사니 > [2022] 회로이론' 카테고리의 다른 글
[백준/C] 3273번 두 수의 합 (더블포인터) (0) | 2022.12.11 |
---|---|
[백준/C] 11659번 구간 합 구하기 4 - 슬라이딩 윈도우 알고리즘 (0) | 2022.12.11 |
[백준/C] 1978번 소수 찾기 (0) | 2022.12.11 |
[백준/C] 9012번 괄호 (스택) (0) | 2022.12.11 |
[백준/C] 2559번 수열 (슬라이딩 윈도우, 누적합) (0) | 2022.12.11 |