Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구슬탈출2
- BFS: Shortest Reach in a Graph
- 매칭점수
- 프로그래머스
- 해커랭크
- hackerrank
- [sqld]자격증합격
- 격파르타 후기
- Common Child
- candies
- Recursion: Davis' Staircase
- python
- 백준
- Roads and Libraries
- 피보나치 함수
- 야근지수
- 코딩테스트
- 머신러닝
- Reverse Shuffle Merge
- 격파르타 장점
- Special String Again
- 격파르타 합격후기
- Interview Preparation Kit
- Find the nearest clone
- Algorithm
- 파이썬
- DFS: Connected Cell in a Grid
- programmers
- Max Array Sum
- 알고리즘
Archives
- Today
- Total
Archive
[BOJ] 1406 에디터 본문
풀이
-
처음에는 case로 나누고 조건에 맞게 문자열 추가하는 방법 수행(실패, 시간초과)
# 실패 edit_text = str(input()) edit_text_len = len(edit_text) cur_pointer = edit_text_len command_num = int(input()) for _ in range(command_num): command = input().split(' ') if command[0] == 'L' and cur_pointer > 0: cur_pointer -= 1 elif command[0] == 'D' and cur_pointer < edit_text_len: cur_pointer += 1 elif command[0] == 'B' and cur_pointer > 0: edit_text = edit_text[:cur_pointer-1] + edit_text[cur_pointer:] edit_text_len -= 1 cur_pointer -= 1 elif command[0] == 'P': edit_text = edit_text[:cur_pointer] +command[1] +edit_text[cur_pointer:] cur_pointer += 1 edit_text_len += 1 else: assert("Not L, D, B, P") print(edit_text)
-
list를 사용한 stack 2개를 사용해 문자열 삽입, 삭제 시 O(1)로 수행.
from sys import stdin # 가운데 커서가 있고, left_stack은 오른쪽이 입구, right_stack은 입구가 왼쪽에 있다고 생각 left_stack = list(input()) right_stack = [] command_num = int(input()) for command in stdin: # 커서를 왼쪽으로 옮김. if command[0] == 'L' and left_stack: # 왼쪽 스택의 끝 값 -> 오른쪽 스택에 추가. right_stack.append(left_stack.pop()) # 커서를 오른쪽으로 옮김 elif command[0] == 'D' and right_stack: left_stack.append(right_stack.pop()) # 커서 왼쪽 문자열 삭제 elif command[0] == 'B' and left_stack: left_stack.pop() # 커서 왼쪽에 문자열 추가 elif command[0] == 'P': left_stack.append(command[2]) # right_stack은 거꾸로 출력 print(''.join(left_stack + right_stack[::-1]))
'공부 > Algorithm' 카테고리의 다른 글
[BOJ] 1303. 전쟁-전투 (0) | 2021.02.07 |
---|---|
[BOJ] 1697 숨바꼭질 (0) | 2021.01.31 |
[BOJ] 스택수열 (0) | 2021.01.24 |
[BOJ] 9012 괄호 (0) | 2021.01.24 |
[BOJ] 10828. 스택 (0) | 2021.01.16 |
Comments