구현 문제입니다. (이 게시판은 불친절 모드 게시판입니다)
[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 |