diff --git "a/\354\265\234\354\232\260\354\204\235/\353\204\244\355\212\270\354\233\214\355\201\254.md" "b/\354\265\234\354\232\260\354\204\235/\353\204\244\355\212\270\354\233\214\355\201\254.md" new file mode 100644 index 0000000..27e4d12 --- /dev/null +++ "b/\354\265\234\354\232\260\354\204\235/\353\204\244\355\212\270\354\233\214\355\201\254.md" @@ -0,0 +1,41 @@ +# 네트워크 + +```kotlin +import java.util.* + +class Solution { + fun solution(n: Int, computers: Array): Int { + var answer = 0 + + var visited = Array(computers.size) { false } + + for ((n, computer) in computers.withIndex()) { + if (visited[n]) { + continue + } + visited[n] = true + bfs(n, computers, visited) + answer += 1 + } + return answer + } + + fun bfs(n: Int, computers: Array, visited: Array) { + var queue: Queue = LinkedList() + queue.add(n) + + while (queue.isNotEmpty()) { + var now = queue.poll() + + for ((next, computer) in computers[now].withIndex()) { + if (visited[next] || computer != 1) { + continue + } + queue.add(next) + visited[next] = true + } + } + } +} + +``` \ No newline at end of file diff --git "a/\354\265\234\354\232\260\354\204\235/\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.md" "b/\354\265\234\354\232\260\354\204\235/\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.md" new file mode 100644 index 0000000..e0e6bef --- /dev/null +++ "b/\354\265\234\354\232\260\354\204\235/\354\235\264\354\244\221\354\232\260\354\204\240\354\210\234\354\234\204\355\201\220.md" @@ -0,0 +1,63 @@ +# 이중우선순위큐 + +```kotlin +import java.util.* + +class Solution { + fun solution(operations: Array): IntArray { + var answer = intArrayOf() + + var totalQueue = mutableSetOf() + var minQueue = PriorityQueue() + var maxQueue = PriorityQueue(Collections.reverseOrder()) + + for (operation in operations) { + var (command, numberValue) = operation.split(" ") + val number = numberValue.toInt() + + if (command == "I") { + totalQueue.add(number) + minQueue.add(number) + maxQueue.add(number) + } else if (command == "D") { + if (number == 1) { + while (maxQueue.isNotEmpty()) { + val maxNumber = maxQueue.poll() + if (totalQueue.contains(maxNumber)) { + totalQueue.remove(maxNumber) + break + } + } + } else { + while (minQueue.isNotEmpty()) { + val minNumber = minQueue.poll() + if (totalQueue.contains(minNumber)) { + totalQueue.remove(minNumber) + break + } + } + } + } + } + print(totalQueue) + var maxNumber = 0 + var minNumber = 0 + while (maxQueue.isNotEmpty()) { + maxNumber = maxQueue.poll() + print(maxNumber) + if (totalQueue.contains(maxNumber)) { + break + } + maxNumber = 0 + } + while (minQueue.isNotEmpty()) { + minNumber = minQueue.poll() + if (totalQueue.contains(minNumber)) { + break + } + minNumber = 0 + } + return intArrayOf(maxNumber, minNumber) + } +} +``` \ No newline at end of file