-
Algorithm) BOJ) 백준 1406 - 에디터Algorithm/BOJ 2019. 5. 21. 18:16728x90
문제를 보고 가장 먼저 한 생각은 배열로 만들어 풀면 되겠다 라고 생각했었지만
그렇게 하면 삽입, 삭제를 할 때 커서 뒤의 모든 원소를 옮겨야 하기 때문에 시간 제한에 걸리게 됩니다!
커서를 기준으로 왼쪽, 오른쪽 2개의 스택을 만들어 push, pop해주는 방법을 사용하였습니다 :ㅇ
커서를 왼쪽으로 한 칸 옮긴다건 왼쪽 스택에서 빼서 오른쪽 스택에 옮긴다는 의미가 되겠죠!!
Swift 코드
var stackL = Array(readLine()!) var stackR = [Character]() for _ in 0..<Int(readLine()!)! { let order = readLine()! switch order { case "L": if !stackL.isEmpty { stackR.append(stackL.removeLast()) } case "D": if !stackR.isEmpty { stackL.append(stackR.removeLast()) } case "B": if !stackL.isEmpty { stackL.removeLast() } default: stackL.append(order.last!) } } print(String(stackL + stackR.reversed()))
아래 풀이는 재채점 되면서 시간초과가 되었습니다.if let str = readLine() { let n = readLine().map{Int($0)!}! var stackL = str var stackR = "" for _ in 0..<n { var order = readLine() switch order { case "L": if stackL != "" { let c = stackL.removeLast() stackR.append(c) } case "D": if stackR != "" { let c = stackR.removeLast() stackL.append(c) } case "B": if stackL != "" { stackL.removeLast() } default: let p = order!.removeLast() stackL.append(p) } } print(stackL + stackR.reversed()) }
'Algorithm > BOJ' 카테고리의 다른 글
Algorithm) BOJ) 백준 7576 - 섬의 개수 (0) 2019.06.06 Algorithm) BOJ) 백준 2667 - 단지번호붙이기 (0) 2019.06.06 Algorithm) BOJ) 백준 9466 - 텀프로젝트 (0) 2019.06.04 Algorithm) BOJ) 백준 1676 - 팩토리얼 0의 개수 (0) 2019.05.17 Algorithm) BOJ) 백준 6588 - 골드바흐의 추측 (0) 2019.05.15