Kotlin/Kotlin 알고리즘

백준 18258번 큐 2 Kotlin 구현해보기

kimc 2023. 9. 9. 23:57
반응형

```

백준 18258번 큐 2 Kotlin 구현해 보기

```

Kimc Kotlin Study

이번 글을 통해 배워갈 내용

  1. 백준 18258번 풀이

https://www.acmicpc.net/problem/18258

 

18258번: 큐 2

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

 

백준 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/

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

반응형