한줄 후기: 스택을 벌써 까먹어?
알고리즘 분류는 스택
처음에 문제 이해를 못해서 스택 하나로 짜다가 다 지우고 다시 짰다.
구조체 배열로 스택을 만들어 사용해봤음..
아마 하나로 하는 방법도 있겠지..?
#include <stdio.h>
#define MAX_SIZE 500000
struct N{
int stack[MAX_SIZE];
int top;
};
struct N num[7];
int cnt=0;
int push(int n, int p);
int pop(int s);
int main(){
int n, p, i, s, n2;
scanf("%d %d", &n, &p);
for(i=0; i<n; i++){
scanf("%d %d", &s, &n2);
if(num[s].top < 0){
push(s, n2);
}
else{
if(num[s].stack[num[s].top] > n2){
while(num[s].stack[num[s].top] > n2){
pop(s);
}
if(num[s].stack[num[s].top]!=n2)
push(s, n2);
}
else if(num[s].stack[num[s].top] < n2) push(s,n2);
else continue;
}
}
printf("%d", cnt);
return 0;
}
int push(int n, int p){
num[n].stack[++num[n].top] = p;
cnt++;
}
int pop(int s){
num[s].top--;
cnt++;
}
구조체를 쓰니 코드가 복잡해 보이네..
'DEV > PS' 카테고리의 다른 글
[13163] 닉네임에 갓 붙이기, C (0) | 2019.07.15 |
---|---|
[1713] 후보 추천하기, C (0) | 2019.07.15 |
[15904] UCPC는 무엇의 약자일까? , C (0) | 2019.07.05 |
[12790] Mini Fantasy War, C (0) | 2019.07.03 |
[2667] 단지번호붙이기, C (0) | 2019.06.28 |