계속 출력은 맞았는데 채점만 하면 틀렸다는 결과만 나왔다. 계속 이것저것 시도했는데 나의 실패 원인은 아래와 같을 것이라고 생각한다.
//
실패의 원인 1. 입출력을 잘못 이해했다.
나는 예제 입력/출력 만 보고 한꺼번에 입력을 받고 한꺼번에 출력을 해야 하는 줄 알았다.
push 를 입력받는 부분도, push 4 와 같이 숫자와 함께 입력받은 후 정성스럽게 잘라주는 작업까지... (뻘짓이었다.)


실패의 원인 2. 배열의 사이즈

를 무시하고 당당하게 스택의 size 를 100으로 define 하였다. 엄청난 뻘짓이다.
지금 다시 아래의 틀린 코드를 보니 INPUT을 10000 으로 디파인 해 놓고 ... 난 바보다.

계속 코드를 수정하면서 제출->실패->제출->실패 를 겪었다...
실패 원인 3. 값을 출력해서 눈으로 확인하려고 했던 테스트 코드를 안 지웠다.

실패의 원인 4. size 함수

top이 -1 일 때 0을 출력하도록 했는데, 이렇게 말고 empty 함수를 사용해서 해당 스택이 비어있는지 검사하고 비어있다면 0을 출력하도록 했다.
이것 말고도 기억이 나지 않은 실패의 원인들이 있을 수 있긴 한데, 일단 생각나는 만큼만 적어 보았다.
정답으로 다음과 같이 제출하였다.
#include <iostream>
#include <string>
#define SIZE 10000
#define INPUT 10000
using namespace std;
struct stack{
int top=-1;
int arr[SIZE];
};
void push(struct stack *S, int n){
if(S->top==SIZE-1){
}else {
int top;
S->top +=1;
top = S->top;
S->arr[top] = n;
}
}
int pop(struct stack *S){
if(S->top==-1){
return -1;
}else {
int temp;
int top = S->top;
temp = S->arr[top];
S->top = S->top -1;
return temp;
}
}
int empty(struct stack *S){
if(S->top == -1) return 1;
else return 0;
}
int top(struct stack *S){
int re;
if (empty(S)==1){
re=-1;
}
else if(empty(S)==0){
int temp;
int top=S->top;
temp = S->arr[top];
re= temp;
}
return re;
}
int size(struct stack *S){
if (empty(S)==1){return 0;}
else return S->top+1;
}
int main()
{
ios_base::sync_with_stdio(false);
struct stack S;
string input;
//char ch_input[INPUT];
int int_input;
int i,n;
cin>>int_input;
//cin.ignore();
for(i=0;i<int_input;i++){
//getline(cin,input);
cin>>input;
//cin.ignore();
if(input == "push"){
cin >> n;
push(&S,n);
//cin.ignore();
}
else if(input.compare("top") == 0){
cout<<top(&S)<<endl;
}else if(input.compare("pop")==0){
cout<<pop(&S)<<endl;
}else if(input.compare("size")==0){
cout<<size(&S)<<endl;
}else if(input.compare("empty")==0){
cout<<empty(&S)<<endl;
}
}
return 0;
}'코딩테스트 > 백준' 카테고리의 다른 글
| 백준 배열 5597번 파이썬 과제 안 낸 사람 (0) | 2023.10.23 |
|---|---|
| 백준 10773번(스택): 제로 (0) | 2022.10.18 |
| 백준 10171: 고양이 (특수문자 출력) (0) | 2022.10.14 |
| 백준 2588번 c++ : 두 가지 풀이 방법( getline 함수, 문자열 자르기 substr, 문자열->숫자 형변환 stoi 함수.) (0) | 2022.10.14 |
| 백준 10926 : c++에서의 string 사용 (0) | 2022.10.13 |