알고리즘/BAEKJOON

BOJ 5397 : 키로거

피로물든딸기 2023. 1. 18. 22:40
반응형

알고리즘 문제 전체 링크

 

https://www.acmicpc.net/problem/5397

 

참고

- BOJ 1406 : 에디터

- BOJ 5397 : 키로거 with 세그먼트 트리, 링크드 리스트

 

 

풀이는 BOJ 1406 : 에디터와 동일하므로 참고하자.

입력을 받는 방식과 문자열의 크기만 바꾸면 된다.

 

#include <stdio.h>

int T;
char str[1001000];
char stack1[1001000];
char stack2[1001000];
int sp1, sp2;

int main(void)
{
	scanf("%d", &T);
	
	for (int tc = 0; tc < T; tc++)
	{
		scanf("%s", str);

		int len;
		for (len = 0; str[len]; len++);

		sp1 = sp2 = 0;

		char ch, tmp;
		for (int i = 0; i < len; i++)
		{
			ch = str[i];

			if (ch == '<')
			{
				if (sp1) stack2[sp2++] = stack1[sp1-- - 1];
			}
			else if (ch == '>')
			{
				if (sp2) stack1[sp1++] = stack2[sp2-- - 1];
			}
			else if (ch == '-')
			{
				if (sp1) sp1--;
			}
			else
			{
				stack1[sp1++] = ch;
			}
		}

		for (int i = 0; i < sp1; i++) printf("%c", stack1[i]);
		for (int i = sp2 - 1; i >= 0; i--) printf("%c", stack2[i]);

		putchar('\n');
	}

	return 0;
}
반응형