https://www.acmicpc.net/problem/10866
내 코드
from collections import deque
import sys
def isEmptyQueueFront(queue):
if len(queue) == 0:
print(-1)
return False
else:
print(queue[0])
return True
def isEmptyQueueBack(queue):
if len(queue) == 0:
print(-1)
return False
else:
print(queue[-1])
return True
N = int(input())
queue = deque()
mode = ["push_front", "push_back", "pop_front","pop_back","size","empty","front","back"]
for i in range(N):
st = sys.stdin.readline().split(" ")
m = mode.index(st[0].strip())
if m == 0:
queue.appendleft(st[1].strip())
elif m == 1:
queue.append(st[1].strip())
elif m == 2:
if isEmptyQueueFront(queue):
queue.popleft()
elif m == 3:
if isEmptyQueueBack(queue):
queue.pop()
elif m == 4:
print(len(queue))
elif m == 5:
if len(queue):
print(0)
else:
print(1)
elif m == 6:
isEmptyQueueFront(queue)
elif m == 7:
isEmptyQueueBack(queue)
지난 번에 풀었던 문제와 유사하다.. 근데 스택이 아닌 큐인..
최대한 간결하게 풀려고 했는데 그게 안된다 ㅠ_ㅠ
오랜만에 큐를 쓰려니 기억이 안났다. 정리해보자
# 큐는 놀이공원 생각.. 먼저 온 사람이 먼저 들어감
# 스택은 샌드위치 생각.. 아래에서 위로 쌓이고 위 먼저
# 큐 만들기
from collections import deque
queue = deque()
# 큐 앞에 삽입, list.insert(0,요소) 와 같음
queue.appendleft(요쇼)
# 큐 뒤에 삽입
queue.append(요소)
# 큐 맨앞 삭제
queue.popleft()
# 큐 맨뒤 삭제
queue.pop()
# 큐 길이
len(queue)
Kotlin 버전 답
import java.util.*
fun isEmptyQueueFront(queue: Deque<String>): Boolean {
return if (queue.isEmpty()) {
println(-1)
false
} else {
println(queue.first)
true
}
}
fun isEmptyQueueBack(queue: Deque<String>): Boolean {
return if (queue.isEmpty()) {
println(-1)
false
} else {
println(queue.last)
true
}
}
fun main() {
val input = Scanner(System.`in`)
val N = input.nextInt()
input.nextLine() // To consume the newline after the integer input
val queue: Deque<String> = ArrayDeque()
val mode = listOf("push_front", "push_back", "pop_front", "pop_back", "size", "empty", "front", "back")
for (i in 0 until N) {
val st = input.nextLine().split(" ")
val m = mode.indexOf(st[0].trim())
when (m) {
0 -> queue.addFirst(st[1].trim())
1 -> queue.addLast(st[1].trim())
2 -> if (isEmptyQueueFront(queue)) queue.removeFirst()
3 -> if (isEmptyQueueBack(queue)) queue.removeLast()
4 -> println(queue.size)
5 -> println(if (queue.isEmpty()) 1 else 0)
6 -> isEmptyQueueFront(queue)
7 -> isEmptyQueueBack(queue)
}
}
}
좀 깔끔한 것 같다..^^ 코틀린 최고
Kotlin에서 큐 형태는 Deque<String> 이군
import.java.util.*
val deque : Deque<String> = ArrayDeque()
# 큐 앞에 삽입
queue.addFirst(요소)
# 큐 뒤에 삽입
queue.addLast(요소)
# 큐 맨앞 삭제
queue.removeFirst()
# 큐 맨뒤 삭제
queue.removeLast()
# 큐 사이즈
queue.size
# 큐 비어있는 지 확인
queue.isEmpty()
메모 ..
파이썬에서 개행 문자 없애기
문자열.strip()
코틀린에서 개행 문자 없애기
문자열.trim()
'코딩테스트' 카테고리의 다른 글
[Python] 백준 - 2563번 색종이 (0) | 2024.06.12 |
---|---|
[Python] 백준 1158번 - 요세푸스 문제 (1) | 2024.06.11 |
[Python] 백준 20310번 - 타노스 (0) | 2024.06.06 |
[Python] 백준 1193번 - 분수찾기 (1) | 2024.06.04 |
[Python] 백준 10828번 - 스택 (0) | 2024.06.03 |