본문 바로가기
알고리즘/BAEKJOON

BOJ 5397 : 키로거

by 피로물든딸기 2023. 1. 18.
반응형

알고리즘 문제 전체 링크

 

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;
}
반응형

'알고리즘 > BAEKJOON' 카테고리의 다른 글

BOJ 1572, 9426 : 중앙값 측정  (0) 2023.01.19
BOJ 1655 : 가운데를 말해요 with 세그먼트 트리  (0) 2023.01.19
BOJ 2357 : 최솟값과 최댓값  (0) 2023.01.16
BOJ 10868 : 최솟값  (0) 2023.01.16
BOJ 1708 : 볼록 껍질  (0) 2022.12.28

댓글