[백준/BOJ] 백준 5397번 : 키로거

2020. 8. 17. 10:53알고리즘 문제풀이

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

 

5397번: 키로거

문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거�

www.acmicpc.net

list를 이용해 구현하였다.

 

코드

#include <iostream>
#include<string>
#include <list>
using namespace std;

int main()
{
	cin.tie(NULL);
	ios_base::sync_with_stdio(false);

	int tc;
	string input;
	list<char> password; //리스트로 구현하였다
	list<char>::iterator it;

	cin >> tc;

	for (int t = 0; t < tc; t++)
	{
		password.clear();
		it = password.begin();

		cin >> input;
		
		for (int i = 0; i < input.size(); i++)
		{
			if (input[i] == '<')
			{
				if (it == password.begin())
					continue;

				it--;
			}

			else if (input[i] == '>')
			{
				if (it == password.end())
					continue;

				it++;
			}

			else if (input[i] == '-')
			{
				if (it == password.begin())
					continue;

				it--;
				it = password.erase(it); //erase는 삭제한 것의 다음것을 가르키는것을 반환
			}

			else
			{
				password.insert(it, input[i]);
			}
		}

		for (it = password.begin(); it != password.end(); it++)
			cout << (*it);
		cout << "\n";
	}

	return 0;
}