현 문제입니다. (이 게시판은 불친절 모드 게시판입니다)


[Baekjoon Onine Judge]


#1406 에디터


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



Problem Solving Strategy


-현 문제입니다. 리스트 써도 되고, 스택 써도 됩니다.

알고리즘 문제라기보다 구현이 까다로운 문제라 머 드릴 말씀이 없네요ㅎㅎ..

전 리스트로 풀다가 머리쓰느라 고생했는데, 큐로 풀면 어떨지는 모르겠씁니당.

0.3초라 시간 최대한 단축하려고 구조체로 구현했습니다.


저는 함수 안 쓰고 풀었기 때문에 모르겠는데

list 라이브러리나, 함수는 O(1)이어도 호출 시간이 길어서 시간 초과 날 수도 있을 거에요.

(사실 시간복잡도 계산 안해봐서 몰라요 ㅋㅋ 될 수도 이써요... 여기는 불친절모드 설명 게시판이니까용)


전체 코드 보기


자열 입력받는 거를 잘 못해서, 입력 받는데만 1시간 쏟았네요 ㅂㄷㅂㄷ...

첨 알았는데 scanf가 for문 안에 들어가니까 난리나더라구요 ㅎㅎ(?);;

gets()로 편하게 받았는데, 해당 문법이 C++14에서 삭제되서, gets()를 쓰고 싶으시다면  C++11로 제출해야합니다^^;;


...입력을 예쁘게 못 받은 듯 싶습니다....한두개 더 줄일 수 있을거 같지만

더 이상 코드를 수정할 기력이 없기에 .... 총총/


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<bits/stdc++.h>
using namespace std
struct st{int f,b;char c;}editor[600009];
char ipt[100004],im[4]; int N,i,cs,sz;
int main(){
    scanf("%s\n",&ipt);    scanf("%d\n",&N);
    int asdf=strlen(ipt);
    for(i=1;i<=asdf;i++)
        editor[i]=(st){i-1,i+1,ipt[i-1]};
    editor[0].f=-1, editor[0].b=1; editor[i-1].b=-1; cs=i-1; sz=i;
    for(i=0;i<N;i++){ gets(im);
        if(im[0]=='L'&&editor[cs].f!=-1) cs=editor[cs].f;
        if(im[0]=='D'&&editor[cs].b!=-1) cs=editor[cs].b;
        if(im[0]=='B'&&editor[cs].f!=-1){
            cs=editor[cs].f;
            editor[cs].b=editor[editor[cs].b].b;
            editor[editor[cs].b].f=cs;
        }
        if(im[0]=='P'){
            editor[sz]=(st){cs,editor[cs].b,im[2]};
            editor[editor[cs].b].f=sz;
            editor[cs].b=sz;
            cs=editor[cs].b;
            sz++;
        }
    }
    i=cs; while(editor[i].f!=-1) i=editor[i].f; i=editor[i].b; 
    while(editor[i].b!=0){
        printf("%c",editor[i].c);
        i=editor[i].b;
    }
}
cs




'Algorithm > BOJ 문제풀이' 카테고리의 다른 글

[BOJ #2594] 놀이공원  (0) 2018.02.14
[BOJ #2613] 숫자구슬  (4) 2018.02.13
[BOJ #2610] 회의준비  (0) 2018.02.12

+ Recent posts