ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kotlin 🍬 λ°±μ€€ 14단계 :: 10816 번
    2024. 3. 4. 22:44
    λ°˜μ‘ν˜•

    숫자 μΉ΄λ“œ 2

    문제   |

      숫자 μΉ΄λ“œλŠ” μ •μˆ˜ ν•˜λ‚˜κ°€ μ ν˜€μ Έ μžˆλŠ” μΉ΄λ“œμ΄λ‹€. μƒκ·Όμ΄λŠ” 숫자 μΉ΄λ“œ N개λ₯Ό 가지고 μžˆλ‹€. μ •μˆ˜ Mκ°œκ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 이 μˆ˜κ°€ μ ν˜€μžˆλŠ” 숫자 μΉ΄λ“œλ₯Ό 상근이가 λͺ‡ 개 가지고 μžˆλŠ”μ§€ κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

     

    μž…λ ₯   |

      첫째 쀄에 상근이가 가지고 μžˆλŠ” 숫자 μΉ΄λ“œμ˜ 개수 N(1 ≤ N ≤ 500,000)이 주어진닀. λ‘˜μ§Έ μ€„μ—λŠ” 숫자 μΉ΄λ“œμ— μ ν˜€μžˆλŠ” μ •μˆ˜κ°€ 주어진닀. 숫자 μΉ΄λ“œμ— μ ν˜€μžˆλŠ” μˆ˜λŠ” -10,000,000보닀 ν¬κ±°λ‚˜ κ°™κ³ , 10,000,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€.

      μ…‹μ§Έ μ€„μ—λŠ” M(1 ≤ M ≤ 500,000)이 주어진닀. λ„·μ§Έ μ€„μ—λŠ” 상근이가 λͺ‡ 개 가지고 μžˆλŠ” 숫자 μΉ΄λ“œμΈμ§€ ꡬ해야 ν•  M개의 μ •μˆ˜κ°€ 주어지며, 이 μˆ˜λŠ” 곡백으둜 κ΅¬λΆ„λ˜μ–΄μ Έ μžˆλ‹€. 이 μˆ˜λ„ -10,000,000보닀 ν¬κ±°λ‚˜ κ°™κ³ , 10,000,000보닀 μž‘κ±°λ‚˜ κ°™λ‹€.

     

    좜λ ₯   |

      N개의 μˆ˜μ— λŒ€ν•΄μ„œ, 각 μˆ˜κ°€ 적힌 숫자 μΉ΄λ“œλ₯Ό 상근이가 λͺ‡ 개 가지고 μžˆλŠ”μ§€λ₯Ό 곡백으둜 ꡬ뢄해 좜λ ₯ν•œλ‹€.

     

     

    풀이  |

      N개의 가지고 μžˆλŠ” 숫자 μΉ΄λ“œμ˜ 각각의 개수λ₯Ό dictionary ν˜•νƒœλ‘œ λ”°λ‘œ μ €μž₯ν•œλ‹€. ν›„ M개의 숫자 array와 가지고 μžˆλŠ” 숫자 μΉ΄λ“œμ˜ 개수λ₯Ό 담은 dictionaryλ₯Ό λΉ„κ΅ν•˜μ—¬ getOrDefault ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄λ‹Ή μˆ«μžκ°€ 있으면 κ·Έ 갯수λ₯Ό, μ—†μœΌλ©΄ default κ°’ 0을 담도둝 ν•œλ‹€.

     

     

    λ‹΅μ•ˆ  |

    fun main() {
        val N = readLine()!!.toInt()
        val nArr = readLine()!!.split(" ").map { it.toInt() }
        val nCount = mutableMapOf<Int, Int>()
        
        nArr.forEach {
            nCount[it] = nCount.getOrDefault(it, 0) + 1
        }
        
        val M = readLine()!!.toInt()
        val mArr = readLine()!!.split(" ").map { it.toInt() }
        
        val result = mArr.map { nCount.getOrDefault(it, 0) }
        print(result.joinToString(" "))
    }
    λ°˜μ‘ν˜•

    λŒ“κΈ€

Designed by Tistory.