메모장에서 커서 문제로, >, <, - 명령이 존재함
- 더블 링크드 리스트
- 삽입, 삭제
- 구조체 만들어서 사용
- 더욱 직관적임
#include <stdio.h>
char st[1000005];
struct data {
char ch;
data *prev, *next;
data *myAlloc(char _ch, data *_prev, data *_next) {
ch = _ch, prev = _prev, next = _next;
return this;
}
void pop()
{
prev->next = next;
next->prev = prev;
}
} *head, *tail, *cur, buf[1000005];
int bn;
void push(char ch)
{
data *pr = cur->prev;
pr->next = cur->prev = buf[bn++].myAlloc(ch, pr, cur);
}
int main()
{
int T;
scanf("%d", &T); // 테스트케이스 갯수 입력받고
head = buf[0].myAlloc(0, 0, 0); // head 와
tail = buf[1].myAlloc(0, 0, 0); // tail 을 만듬
while (T--) {
bn = 2;
head->next = tail; // 연결
tail->prev = head; // 연결
cur = tail; // 꼬리랑 동일
scanf("%s", st);
for (int i = 0; st[i]; i++) {
switch (st[i]) {
case '<':
if (cur->prev != head) cur = cur->prev;
break;
case '>':
if (cur != tail) cur = cur->next;
break;
case '-':
if (cur->prev != head) cur->prev->pop();
break;
default:
push(st[i]);
}
}
for (data *p = head->next; p != tail; p = p->next) printf("%c", p->ch);
printf("\n");
}
}
2 <<BP<A>>Cd- ThIsIsS3Cr3t | BAPC ThIsIsS3Cr3t |
'Algorithms > simulation' 카테고리의 다른 글
5 Problem A : 지하철 (0) | 2019.11.08 |
---|---|
2 Problem E : 구간 성분 (0) | 2019.11.07 |
2 Problem C : 용액 (0) | 2019.11.07 |
2 Problem A : 수열 (0) | 2019.11.07 |
1 Problem F : 연속부분합 찾기 (0) | 2019.11.07 |
댓글