[๋ฐฑ์ค€] 7662 ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ

2022. 11. 20. 20:44ยทAlgorithm/Algorithm (๋ฌธ์ œํ’€์ด)

 

๐Ÿ”’ ๋ฌธ์ œ

 

 

๐Ÿง  ์•„์ด๋””์–ด

๋ฌธ์ œ ์ œ๋ชฉ์ฒ˜๋Ÿผ ์ตœ์†Œํž™, ์ตœ๋Œ€ํž™์˜ ์šฐ์„ ์ˆœ์œ„ ํ 2๊ฐœ๋ฅผ ์šด์˜ํ•˜๋Š” ๋ฐฉ์‹์„ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๊ณ  ๋งค์šฐ ์ง๊ด€์ ์ด๋‹ค.

ํž™์€ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ใ…Žใ…Ž;;

 

 

์ค‘๋ณต์›์†Œ๋ฅผ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํƒ์ƒ‰๊นŒ์ง€ $$ ๋ชจ๋‘ O(Log N) $$ ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

๋ฐ”๋กœ TreeMap<Int,Int> ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๋˜, ๊ต‰์žฅํžˆ ํšจ์ž API ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์šฐ์„ ์ˆœ์œ„ ํ๊ฐ€ root ๋งŒ ์ถ”์ถœํ•˜๊ธฐ ํŽธํ–ˆ๋‹ค๋ฉด

์ด ๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ์…‹ ์•ˆ์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ / ๋‚ฎ์€ ๊ฐ’์„ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

TreeMap, TreeSet ์€
Binary Search Tree ๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ
๋ชจ๋“  ์—ฐ์‚ฐ์ด O(Log N) ์ด๋‹ค.

 

๊ทผ๋ฐ firstEntry(), firstKey() ์ด๋Ÿฐ๊ฑฐ ์‹œ๊ฐ„๋ณต์žก๋„ O(Log N) ๋งž์•„?

๋งž๋‹ค. BST ์˜ ์™ผ/์˜ค๋ฅธ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ํŠธ๋ฆฌ์˜ ๋†’์ด์ธ O(Log N) ์˜ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.

 

๐Ÿ”‘ Kotlin Code

import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*

private val MAX = 1
private val MIN = -1

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val numOfTC = br.readLine().toInt()
    val sb = StringBuilder()

    repeat(numOfTC){
        val numOfOperation = br.readLine().toInt()
        // ์˜ค๋ฆ„์ฐจ์ˆœ
        val treeMap = TreeMap<Int,Int>(){key1, key2-> key1.compareTo(key2)}

        for(i in 1 .. numOfOperation){
            val str = br.readLine().split(" ")
            val op = str.first()
            val num = str.last().toInt()

            when (op) {
                "I" -> {
                    if(treeMap.containsKey(num)) {
                        treeMap[num] = treeMap[num]!!.plus(1)
                    } else {
                        treeMap[num] = 1
                    }
                }
                "D" -> {
                    if (treeMap.isEmpty()) continue
                    when (num) {
                        MAX -> {
                            val (num, cnt) = treeMap.lastEntry()
                            if (cnt == 1) treeMap.remove(num)
                            else treeMap[num] = (cnt - 1)
                        }
                        MIN -> {
                            val (num, cnt) = treeMap.firstEntry()
                            // unique value
                            if (cnt == 1) treeMap.remove(num)
                            else treeMap[num] = (cnt - 1)
                        }
                    }
                }
            }
        }

        if (treeMap.isEmpty()) sb.append("EMPTY\n")
        else sb.append("${treeMap.lastKey()} ${treeMap.firstKey()}\n")
    }

    print(sb)
}
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > Algorithm (๋ฌธ์ œํ’€์ด)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 17835 ๋ฉด์ ‘๋ณด๋Š” ์Šน๋ฒ”์ด๋„ค  (0) 2022.11.18
[๋ฐฑ์ค€] 4375 1  (0) 2022.11.17
[๋ฐฑ์ค€] 1629 ๊ณฑ์…ˆ  (0) 2022.11.12
[๋ฐฑ์ค€] 2295 ์„ธ ์ˆ˜์˜ ํ•ฉ  (1) 2022.11.05
[๋ฐฑ์ค€] 18870 ์ขŒํ‘œ ์••์ถ•  (0) 2022.11.01
'Algorithm/Algorithm (๋ฌธ์ œํ’€์ด)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 17835 ๋ฉด์ ‘๋ณด๋Š” ์Šน๋ฒ”์ด๋„ค
  • [๋ฐฑ์ค€] 4375 1
  • [๋ฐฑ์ค€] 1629 ๊ณฑ์…ˆ
  • [๋ฐฑ์ค€] 2295 ์„ธ ์ˆ˜์˜ ํ•ฉ
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (432)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (๋ฌธ์ œํ’€์ด) (56)
        • Algorithm (์ด๋ก ) (23)
      • JVM (65)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (24)
        • Error (7)
      • ๊ธฐํƒ€ (5)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (13)
        • git (19)
        • ์žก๋™์‚ฌ๋‹ˆ (27)
      • ์žฌํ…Œํฌ (11)
        • ์„ธ๋ฌด (4)
        • ํˆฌ์ž (3)
        • ๋ณดํ—˜ (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • ์‹œ์Šคํ…œ ๋ณด์•ˆ (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • ์ €์ž‘๊ถŒ๊ณผ ์Šค๋งˆํŠธํฐ์˜ ์ดํ•ด (0)
      • ์ƒ๊ฐ ๋ญ‰์น˜ (6)
      • ๊ถ๊ธˆ์ฆ (2)
      • Private (4)
        • ์ด์ง ๊ฒฝํ—˜ (0)
        • ๊ฟˆ์„ ์ฐพ์•„์„œ (1)
      • Android (21)
        • OS (4)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • WEB
    • ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • DataBase
    • Linux
    • Mobile
    • C
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • github
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Kotlin
    javascript
    Spring
    linux
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    PostgreSQL
    Git
    android
    Programmers
    ๋ฐฑ์ค€
    JPA
    java
    C++
    docker
    database
    algorithm
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    kafka
    Bitcoin
    ubuntu
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
M_Falcon
[๋ฐฑ์ค€] 7662 ์ด์ค‘ ์šฐ์„ ์ˆœ์œ„ ํ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”