[백준] 1406 에디터(C++)

2022. 9. 20. 18:21·Algorithm/Solution
728x90

1406번: 에디터 (acmicpc.net)

 

1406번: 에디터

첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수

www.acmicpc.net


난이도 : 실버2

풀이 과정 :

일단 시간제한이 0.2초이고 문자열이 십만, 명령어의 개수가 50만이므로

최악의 경우 최대 연산 개수가 십만*50만 = 500억이 된다.

그러면 O(n)으로 짜면 무조건 시간 초과가 나고

선형 시간에 알고리즘을 짜야된다.

선형 시간에 이 문제를 푸는 방법은 바로 연결리스트 자료 구조를 이용하면된다.

배열/벡터와 달리 연결리스트는 특정 인덱스의 원소를 삭제, 추가 하는데 시간복잡도가 O(1)이기 때문에

위 문제를 선형시간에 풀 수있게 된다.

참고로 나는 c++의 stl list를 이용했다 ㅎ

 

코드 :

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

int n;
string s;
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    list<char> l;
    cin >> s;
    for (char c : s) l.push_back(c);
    list<char>::iterator t = l.end();
   

    cin >> n;
    while (n--) {
        string cmd;
        cin >> cmd;
        if (cmd == "L") {
            if (t != l.begin()) t--;
        }
        else if (cmd == "D") {
            if (t != l.end()) t++;
        }
        else if (cmd == "B") {
            list<char>::iterator tmp = t;
            if (t != l.begin()) {
                l.erase(--t);
            }
            t = tmp;
        }
        else {
            char c;
            cin >> c;
            l.insert(t, c);
        }
    }

    for (auto it : l) cout << it;

}

 

 

728x90
저작자표시 비영리

'Algorithm > Solution' 카테고리의 다른 글

[프로그래머스] 프린터(JavaScript)  (0) 2022.10.20
[백준] 4179 불!(C++)  (2) 2022.09.30
[백준] 2792 보석 상자(C++)  (0) 2022.08.22
[백준] 14503 로봇 청소기 (C++)  (0) 2022.08.17
[백준] 15686 치킨 배달(C++)  (0) 2022.07.28
'Algorithm/Solution' 카테고리의 다른 글
  • [프로그래머스] 프린터(JavaScript)
  • [백준] 4179 불!(C++)
  • [백준] 2792 보석 상자(C++)
  • [백준] 14503 로봇 청소기 (C++)
BeNI
BeNI
코딩하는 블로그
  • BeNI
    코딩못하는컴공
    BeNI
  • 전체
    오늘
    어제
    • Menu (253)
      • My profile (1)
      • 회고 | 후기 (8)
      • Frontend (65)
        • Article (11)
        • Study (35)
        • 프로그래머스 FE 데브코스 (19)
      • Backend (0)
      • Algorithm (58)
        • Solution (46)
        • Study (12)
      • Major (111)
        • C&C++ (23)
        • Java (20)
        • Data Structure (14)
        • Computer Network (12)
        • Database (15)
        • Linux (6)
        • Architecture (3)
        • Lisp (15)
        • OS (1)
        • Security (2)
      • etc (2)
  • 링크

    • 깃허브
    • 방명록
  • 인기 글

  • 최근 댓글

  • 최근 글

  • 태그

    자료구조
    프로그래머스
    react
    파일처리
    리팩토링
    Algorithm
    C++
    데브코스
    백준
    lisp
  • hELLO· Designed By정상우.v4.10.2
BeNI
[백준] 1406 에디터(C++)
상단으로

티스토리툴바