๐Ÿ™‡โ€โ™€๏ธ[Silver II] ์—๋””ํ„ฐ - 1406

๋ฌธ์ œ ๋งํฌ

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 21020 KB, ์‹œ๊ฐ„: 72 ms

๋ถ„๋ฅ˜

์ž๋ฃŒ ๊ตฌ์กฐ, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ, ์Šคํƒ

์ œ์ถœ ์ผ์ž

2024๋…„ 1์›” 26์ผ 18:49:28

๋ฌธ์ œ ์„ค๋ช…

ํ•œ ์ค„๋กœ ๋œ ๊ฐ„๋‹จํ•œ ์—๋””ํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด ํŽธ์ง‘๊ธฐ๋Š” ์˜์–ด ์†Œ๋ฌธ์ž๋งŒ์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” ํŽธ์ง‘๊ธฐ๋กœ, ์ตœ๋Œ€ 600,000๊ธ€์ž๊นŒ์ง€ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ํŽธ์ง‘๊ธฐ์—๋Š” '์ปค์„œ'๋ผ๋Š” ๊ฒƒ์ด ์žˆ๋Š”๋ฐ, ์ปค์„œ๋Š” ๋ฌธ์žฅ์˜ ๋งจ ์•ž(์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž์˜ ์™ผ์ชฝ), ๋ฌธ์žฅ์˜ ๋งจ ๋’ค(๋งˆ์ง€๋ง‰ ๋ฌธ์ž์˜ ์˜ค๋ฅธ์ชฝ), ๋˜๋Š” ๋ฌธ์žฅ ์ค‘๊ฐ„ ์ž„์˜์˜ ๊ณณ(๋ชจ๋“  ์—ฐ์†๋œ ๋‘ ๋ฌธ์ž ์‚ฌ์ด)์— ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ๊ธธ์ด๊ฐ€ L์ธ ๋ฌธ์ž์—ด์ด ํ˜„์žฌ ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅ๋˜์–ด ์žˆ์œผ๋ฉด, ์ปค์„œ๊ฐ€ ์œ„์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์€ L+1๊ฐ€์ง€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

์ด ํŽธ์ง‘๊ธฐ๊ฐ€ ์ง€์›ํ•˜๋Š” ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

L ์ปค์„œ๋ฅผ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์นธ ์˜ฎ๊น€ (์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์˜ ๋งจ ์•ž์ด๋ฉด ๋ฌด์‹œ๋จ)
D ์ปค์„œ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์˜ฎ๊น€ (์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์˜ ๋งจ ๋’ค์ด๋ฉด ๋ฌด์‹œ๋จ)
B ์ปค์„œ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ์‚ญ์ œํ•จ (์ปค์„œ๊ฐ€ ๋ฌธ์žฅ์˜ ๋งจ ์•ž์ด๋ฉด ๋ฌด์‹œ๋จ)
์‚ญ์ œ๋กœ ์ธํ•ด ์ปค์„œ๋Š” ํ•œ ์นธ ์™ผ์ชฝ์œผ๋กœ ์ด๋™ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‚˜ํƒ€๋‚˜์ง€๋งŒ, ์‹ค์ œ๋กœ ์ปค์„œ์˜ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋˜ ๋ฌธ์ž๋Š” ๊ทธ๋Œ€๋กœ์ž„
P \$ \$๋ผ๋Š” ๋ฌธ์ž๋ฅผ ์ปค์„œ ์™ผ์ชฝ์— ์ถ”๊ฐ€ํ•จ

์ดˆ๊ธฐ์— ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ ์ดํ›„ ์ž…๋ ฅํ•œ ๋ช…๋ น์–ด๊ฐ€ ์ฐจ๋ก€๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ชจ๋“  ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚œ ํ›„ ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋‹จ, ๋ช…๋ น์–ด๊ฐ€ ์ˆ˜ํ–‰๋˜๊ธฐ ์ „์— ์ปค์„œ๋Š” ๋ฌธ์žฅ์˜ ๋งจ ๋’ค์— ์œ„์น˜ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์ดˆ๊ธฐ์— ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ์ด ๋ฌธ์ž์—ด์€ ๊ธธ์ด๊ฐ€ N์ด๊ณ , ์˜์–ด ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ธธ์ด๋Š” 100,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ž…๋ ฅํ•  ๋ช…๋ น์–ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ˆ˜ M(1 โ‰ค M โ‰ค 500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ์…‹์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ์ž…๋ ฅํ•  ๋ช…๋ น์–ด๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ๋ช…๋ น์–ด๋Š” ์œ„์˜ ๋„ค ๊ฐ€์ง€ ์ค‘ ํ•˜๋‚˜์˜ ํ˜•ํƒœ๋กœ๋งŒ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ชจ๋“  ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋‚œ ํ›„ ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿš€ํ’€์ด

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋ฌธ์ œ์ด๋‹ค.

์ปค์„œ๊ฐ€ ๋งจ ์™ผ์ชฝ์— ์žˆ์„๋–„ ์™ผ์ชฝ์œผ๋กœ ๋‹ค์‹œ ์ปค์„œ๋ฅผ ์˜ฎ๊ธฐ๋ ค๋ฉด ์•„๋ฌด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์•„์•ผํ•˜๋Š”๋ฐ, li.begin()์œผ๋กœ๋งŒ ๋น„๊ตํ•˜๋ฉด ์ถ”ํ›„ push์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ทธ๋ž˜์„œ ๊ผผ์ˆ˜๋กœ ๋งจ ์ฒ˜์Œ์— li์— ์˜๋ฏธ์—†๋Š” ๊ฐ’์„ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ด์„œ ์ด ๋ถ€๋ถ„์„ ํ•ด๊ฒฐํ–ˆ๋‹ค.

string str;
int n;
list<char> li;
list<char>::iterator cursor, s;

void solve()
{
	cin >> str >> n;

	li.push_back('N');

	for (int i = 0; i < str.size(); ++i)
	{
		li.push_back(str[i]);
	}

	cursor = li.begin();
	s = li.begin();

	for (int i = 0; i < str.size(); ++i)
	{
		cursor++;
	}

	char temp;
	for (int i = 0; i < n; ++i)
	{
		cin >> temp;

		if (temp == 'L')
		{
			// ๋งจ ์•ž์ด๋ฉด ๋ฌด์‹œ
			if (cursor != li.begin())
				--cursor;
		}
		else if (temp == 'D')
		{
			// ๋งจ ๋’ค๋ฉด ๋ฌด์‹œ
			if (cursor != --li.end())
				cursor++;
		}
		else if (temp == 'B')
		{
			// ์ปค์„œ๊ฐ€ ๋งจ์•ž์ด๋ฉด ๋ฌด์‹œ๋จ.
			if (cursor != s)
			{
				list<char>::iterator t = cursor--;
				li.erase(t);
			}
		}
		else if (temp == 'P')
		{
			char newChar;
			cin >> newChar;

			li.insert(++cursor, newChar);
			cursor--;
		}
	}

	cursor = li.begin();
	for (int i = 0; i < li.size() - 1; ++i)
	{
		cout << *++cursor;
	}
}

๐Ÿš€์ „์ฒด ์ฝ”๋“œ

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include<iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <list>

using namespace std;

string str;
int n;
list<char> li;
list<char>::iterator cursor, s;

void solve()
{
	cin >> str >> n;

	li.push_back('N');

	for (int i = 0; i < str.size(); ++i)
	{
		li.push_back(str[i]);
	}

	cursor = li.begin();
	s = li.begin();

	for (int i = 0; i < str.size(); ++i)
	{
		cursor++;
	}

	char temp;
	for (int i = 0; i < n; ++i)
	{
		cin >> temp;

		if (temp == 'L')
		{
			// ๋งจ ์•ž์ด๋ฉด ๋ฌด์‹œ
			if (cursor != li.begin())
				--cursor;
		}
		else if (temp == 'D')
		{
			// ๋งจ ๋’ค๋ฉด ๋ฌด์‹œ
			if (cursor != --li.end())
				cursor++;
		}
		else if (temp == 'B')
		{
			// ์ปค์„œ๊ฐ€ ๋งจ์•ž์ด๋ฉด ๋ฌด์‹œ๋จ.
			if (cursor != s)
			{
				list<char>::iterator t = cursor--;
				li.erase(t);
			}
		}
		else if (temp == 'P')
		{
			char newChar;
			cin >> newChar;

			li.insert(++cursor, newChar);
			cursor--;
		}
	}

	cursor = li.begin();
	for (int i = 0; i < li.size() - 1; ++i)
	{
		cout << *++cursor;
	}
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	solve();

	return 0;
}

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: