1.
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
#include <vector>
#include <list>
using namespace std;
string s;
int commandNum;
list<char> l;
int main(void)
{
// freopen("B1406_input.txt", "r", stdin);
cin >> s >> commandNum;
for(int i = 0; i < s.size(); i++)
{
l.push_back(s[i]);
}
// 커서 생성
auto cur = l.end();
for(int i = 1; i <= commandNum; i++)
{
char command;
cin >> command;
if(command == 'P')
{
char data;
cin >> data;
l.insert(cur, data);
}
else if(command == 'L')
{
if(cur != l.begin())
{
cur--;
}
}
else if(command == 'D')
{
if(cur != l.end())
{
cur++;
}
}
else if(command == 'B')
{
if(cur != l.begin())
{
cur--;
cur = l.erase(cur);
}
}
}
for(auto i = l.begin(); i != l.end(); i++)
{
cout << *i;
}
return 0;
}
|
cs |
2.
#include <stdio.h> #include <iostream> #include <algorithm> #include <map> #include <string> #include <vector> #include <stdlib.h> using namespace std; typedef struct node { struct node *prev; struct node *next; char data; }node; node *head = NULL; node *cur = NULL; string s; int commandNum; void insert(char data) { node *newNode = (node*)malloc(sizeof(node)*1); newNode->data = data; newNode->prev = NULL; newNode->next = NULL; if(head->next == NULL) { head->next = newNode; newNode->prev = head; cur = newNode; } else if(cur->next == NULL) { newNode->prev = cur; cur->next = newNode; cur = newNode; } // 중간에 삽입할 경우 else if(cur->next != NULL) { newNode->next = cur->next; cur->next->prev = newNode; cur->next = newNode; newNode->prev = cur; cur = newNode; } } void left() { if(cur->prev != NULL) { cur = cur->prev; } } void right() { if(cur->next != NULL) { cur = cur->next; } } void del() { if(cur != head) { cur->prev->next = cur->next; // 중간에 삭제하는 경우 if(cur->next != NULL) { cur->next->prev = cur->prev; } else { cur->next = NULL; } cur = cur->prev; } } int main(void) { // freopen("B1406_input.txt", "r", stdin); head = (node*)malloc(sizeof(node)*1); head->next = NULL; head->prev = NULL; cin >> s >> commandNum; for(int i = 0; i < s.size(); i++) { insert(s[i]); } for(int i = 1; i <= commandNum; i++) { char command; cin >> command; if(command == 'P') { char data; cin >> data; insert(data); } else if(command == 'L') { left(); } else if(command == 'D') { right(); } else if(command == 'B') { del(); } } cur = head->next; while(cur != NULL) { cout << cur->data; cur = cur->next; } return 0; } | cs |
'Baekjoon > etc' 카테고리의 다른 글
[백준 1213] 팰린드롬 만들기 (C/C++) (0) | 2020.03.23 |
---|---|
[백준 1158] 요세푸스 문제 (Queue) (C/C++) (0) | 2020.01.24 |
[백준 11652] 카드 (Sort) (C/C++) (0) | 2020.01.22 |
[백준 11650] 좌표 정렬하기 (Sort) (C/C++) (0) | 2020.01.22 |
[백준 11651] 좌표 정렬하기2 (Sort) (C/C++) (0) | 2020.01.22 |