본문 바로가기
Algorithms/simulation

2 Problem D : 키로거(Keylogger)

by OKOK 2019. 11. 7.

메모장에서 커서 문제로, >, <, - 명령이 존재함

 

- 더블 링크드 리스트

- 삽입, 삭제

- 구조체 만들어서 사용

- 더욱 직관적임

 

#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

댓글