10773:ゼロ
質問する
コード#コード# #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACK_LEN 100000
typedef int Data;
typedef struct stack{
Data stackArr[STACK_LEN];
int topIndex;
}Stack;
void stackInit(Stack * pstack); // init
void SPush(Stack * pstack, Data data); //push
void SPop(Stack * pstack); // pop
int main(void)
{
int num;
int sum=0;
int newNum;
//스택생성,초기화
Stack stack;
stackInit(&stack);
scanf("%d",&num);
for(int i=0;i<num;i++)
{
scanf("%d",&newNum);
if(newNum!=0)
{
SPush(&stack, newNum);
}else
{
SPop(&stack); //빼기
}
}
for(int i=0;i<=stack.topIndex;i++)
{
sum+=stack.stackArr[i];
}
printf("%d\n",sum);
return 0;
}
void stackInit(Stack * pstack)
{
pstack->topIndex = -1; //빈상태
}
void SPush(Stack * pstack, Data data)
{
pstack->stackArr[++(pstack->topIndex)] = data; // 데이터 저장
}
void SPop(Stack * pstack)
{
pstack->topIndex -= 1;
}
解説
これはPUSHとPOPを適用する問題です.
0以外の数字がpushで、0を入力した場合、topIndexにある値がポップアップされます.
最初の実行時にエラーが発生したので、新しく作成したコードは上の最初のコードです...
実行時に現れる原因を解析したところ,スタックの長さに起因することが分かった.ああ...ははは
元のコードでもう一度見て、最初よりも優れた性能を示しました.
次のはもともと作成されたコードです!#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACK_LEN 100000
int sum=0;
typedef int Data;
typedef struct stack{
Data stackArr[STACK_LEN];
int topIndex;
}Stack;
void stackInit(Stack * pstack); // init
int SIsEmpty(Stack * pstack); // empty
void SPush(Stack * pstack, Data data); //push
void SPop(Stack * pstack); // pop
Data SSum(Stack * pstack);
int main(void)
{
int num;
int newNum;
//스택생성,초기화
Stack stack;
stackInit(&stack);
scanf("%d",&num);
for(int i=0;i<num;i++)
{
scanf("%d",&newNum);
if(newNum!=0)
{
SPush(&stack, newNum);
}else
{
SPop(&stack); //빼기
}
}
// for(int i=0;i<=stack.topIndex;i++)
// {
// sum+=stack.stackArr[i];
// }
printf("%d\n",SSum(&stack));
return 0;
}
void stackInit(Stack * pstack)
{
pstack->topIndex = -1; //빈상태
}
void SPush(Stack * pstack, Data data)
{
pstack->stackArr[++(pstack->topIndex)] = data; // 데이터 저장
}
void SPop(Stack * pstack)
{
pstack->topIndex -= 1;
}
//
Data SSum(Stack * pstack)
{
for(int i=0;i<=pstack->topIndex;i++)
{
sum+=pstack->stackArr[i];
}
return sum;
}
Reference
この問題について(10773:ゼロ), 我々は、より多くの情報をここで見つけました
https://velog.io/@seochan99/10773-제로
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACK_LEN 100000
typedef int Data;
typedef struct stack{
Data stackArr[STACK_LEN];
int topIndex;
}Stack;
void stackInit(Stack * pstack); // init
void SPush(Stack * pstack, Data data); //push
void SPop(Stack * pstack); // pop
int main(void)
{
int num;
int sum=0;
int newNum;
//스택생성,초기화
Stack stack;
stackInit(&stack);
scanf("%d",&num);
for(int i=0;i<num;i++)
{
scanf("%d",&newNum);
if(newNum!=0)
{
SPush(&stack, newNum);
}else
{
SPop(&stack); //빼기
}
}
for(int i=0;i<=stack.topIndex;i++)
{
sum+=stack.stackArr[i];
}
printf("%d\n",sum);
return 0;
}
void stackInit(Stack * pstack)
{
pstack->topIndex = -1; //빈상태
}
void SPush(Stack * pstack, Data data)
{
pstack->stackArr[++(pstack->topIndex)] = data; // 데이터 저장
}
void SPop(Stack * pstack)
{
pstack->topIndex -= 1;
}
解説
これはPUSHとPOPを適用する問題です.
0以外の数字がpushで、0を入力した場合、topIndexにある値がポップアップされます.
最初の実行時にエラーが発生したので、新しく作成したコードは上の最初のコードです...
実行時に現れる原因を解析したところ,スタックの長さに起因することが分かった.ああ...ははは
元のコードでもう一度見て、最初よりも優れた性能を示しました.
次のはもともと作成されたコードです!#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACK_LEN 100000
int sum=0;
typedef int Data;
typedef struct stack{
Data stackArr[STACK_LEN];
int topIndex;
}Stack;
void stackInit(Stack * pstack); // init
int SIsEmpty(Stack * pstack); // empty
void SPush(Stack * pstack, Data data); //push
void SPop(Stack * pstack); // pop
Data SSum(Stack * pstack);
int main(void)
{
int num;
int newNum;
//스택생성,초기화
Stack stack;
stackInit(&stack);
scanf("%d",&num);
for(int i=0;i<num;i++)
{
scanf("%d",&newNum);
if(newNum!=0)
{
SPush(&stack, newNum);
}else
{
SPop(&stack); //빼기
}
}
// for(int i=0;i<=stack.topIndex;i++)
// {
// sum+=stack.stackArr[i];
// }
printf("%d\n",SSum(&stack));
return 0;
}
void stackInit(Stack * pstack)
{
pstack->topIndex = -1; //빈상태
}
void SPush(Stack * pstack, Data data)
{
pstack->stackArr[++(pstack->topIndex)] = data; // 데이터 저장
}
void SPop(Stack * pstack)
{
pstack->topIndex -= 1;
}
//
Data SSum(Stack * pstack)
{
for(int i=0;i<=pstack->topIndex;i++)
{
sum+=pstack->stackArr[i];
}
return sum;
}
Reference
この問題について(10773:ゼロ), 我々は、より多くの情報をここで見つけました
https://velog.io/@seochan99/10773-제로
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define STACK_LEN 100000
int sum=0;
typedef int Data;
typedef struct stack{
Data stackArr[STACK_LEN];
int topIndex;
}Stack;
void stackInit(Stack * pstack); // init
int SIsEmpty(Stack * pstack); // empty
void SPush(Stack * pstack, Data data); //push
void SPop(Stack * pstack); // pop
Data SSum(Stack * pstack);
int main(void)
{
int num;
int newNum;
//스택생성,초기화
Stack stack;
stackInit(&stack);
scanf("%d",&num);
for(int i=0;i<num;i++)
{
scanf("%d",&newNum);
if(newNum!=0)
{
SPush(&stack, newNum);
}else
{
SPop(&stack); //빼기
}
}
// for(int i=0;i<=stack.topIndex;i++)
// {
// sum+=stack.stackArr[i];
// }
printf("%d\n",SSum(&stack));
return 0;
}
void stackInit(Stack * pstack)
{
pstack->topIndex = -1; //빈상태
}
void SPush(Stack * pstack, Data data)
{
pstack->stackArr[++(pstack->topIndex)] = data; // 데이터 저장
}
void SPop(Stack * pstack)
{
pstack->topIndex -= 1;
}
//
Data SSum(Stack * pstack)
{
for(int i=0;i<=pstack->topIndex;i++)
{
sum+=pstack->stackArr[i];
}
return sum;
}
Reference
この問題について(10773:ゼロ), 我々は、より多くの情報をここで見つけました https://velog.io/@seochan99/10773-제로テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol