[문제]
https://www.acmicpc.net/problem/1406
[코드]
import java.io.*
import java.util.*
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.out))
val str = StringTokenizer(br.readLine()).nextToken()
val n = StringTokenizer(br.readLine()).nextToken().toInt()
val linkedList : LinkedList<String> = LinkedList()
// var cursor = str.length cursor를 linkedList.listIterator() 로 대체
for(s in str){
linkedList.add(s.toString())
}
val iterator = linkedList.listIterator(str.length)
for(i in 0 until n){
val st = StringTokenizer(br.readLine())
when (st.nextToken()) {
"L" -> {
if(iterator.hasPrevious())
iterator.previous()
continue
}
"D" -> {
if(iterator.hasNext())
iterator.next()
continue
}
"B" -> {
if(iterator.hasPrevious()){
iterator.previous()
iterator.remove()
}
continue
}
"P" -> {
iterator.add(st.nextToken())
continue
}
}
}
for(it in linkedList) {
bw.write(it)
}
bw.flush()
bw.close()
}
[풀이]
연결리스트를 이용해서 커서의 위치에 따라 삽입과 삭제를 하여 구할 수 있다.
이때 iterator를 이용하면 cursor 역할을 할 수 있다.
Github : https://github.com/eshc123/2021AlgorithmStudy/blob/main/src/main/PS/baekjoon/1406.kt
'Algorithm and PS > 백준(Kotlin)' 카테고리의 다른 글
백준 - 10773 제로 (코틀린) (0) | 2021.05.24 |
---|---|
백준 - 10828 스택 (코틀린) (0) | 2021.05.24 |
백준 - 1919 애너그램 만들기 (코틀린) (0) | 2021.05.22 |
백준 - 1475 방 번호 (코틀린) (0) | 2021.05.19 |
백준 - 13300 방 배정 (코틀린) (0) | 2021.05.15 |
댓글