Kotlin/Kotlin 알고리즘
백준 18258번 큐 2 Kotlin 구현해보기
kimc
2023. 9. 9. 23:57
반응형
```
백준 18258번 큐 2 Kotlin 구현해 보기
```
이번 글을 통해 배워갈 내용
- 백준 18258번 풀이
https://www.acmicpc.net/problem/18258
백준 18258번 큐 2는
난이도 실버 등급의 문제로서
주어진 명령어에 따라 큐를 구현해 주면 됩니다
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
push 했을 때는 출력을 안 한다는 점만 잘 고려해서
직접 구현을 하시거나 Deque를 써서
시간초과 안 나게 아래와 같이 풀면 됩니다
fun main() {
val inputDto = getInput()
print(solution(inputDto))
}
fun getInput(): InputDto {
val commandCnt = readLine().toString().toInt()
val commands: MutableList<String> = ArrayList()
for (i in 1..commandCnt) {
commands.add(readln())
}
return InputDto(commands)
}
data class InputDto(
var commands: List<String>
)
fun solution(dto: InputDto): String {
val strBuilder = StringBuilder()
val numbs: ArrayDeque<String> = ArrayDeque()
for (commandStr in dto.commands) {
val str = commandStr.split(" ")
when (str[0]) {
"push" -> numbs.add(str[1])
"pop" -> strBuilder.append(numbs.removeFirstOrNull() ?: "-1").append("\n")
"size" -> strBuilder.append(numbs.size).append("\n")
"front" -> strBuilder.append(numbs.firstOrNull() ?: "-1").append("\n")
"back" -> strBuilder.append(numbs.lastOrNull() ?: "-1").append("\n")
"empty" -> strBuilder.append(if (numbs.isEmpty()) "1" else "0").append("\n")
else -> throw Error("command not valid")
}
}
if (strBuilder.isNotEmpty()) {
strBuilder.replace(strBuilder.length - 1, strBuilder.length, "")
}
return strBuilder.toString()
}
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형