[伯俊]1620号私はポケモンマスター李多順です


1620号私はポケモンマスター李多順です

方法


図鑑に順番に入れると、検索名に番号が表示され、検索番号に名前が表示されるのでarrayを使うよりmapクイッククエリーを使うほうがいいです.
そこで,Pocketmon名マッピングとPocketmon Idマッピングを作成して解放した.

時間の複雑さ


完全エンティティの挿入:O(n)
クエリー:O(1)

くうかんふくざつさ


O(2n)

Code

import java.io.BufferedReader
import java.io.InputStreamReader
import java.io.BufferedWriter
import java.io.OutputStreamWriter

class IO1620 {
    private val br = BufferedReader(InputStreamReader(System.`in`))
    private val bw = BufferedWriter(OutputStreamWriter(System.out))
    
    fun flush() = bw.flush()
    fun write(message: String) = bw.write(message)
    fun close() = bw.close()
    fun getInt(): List<Int> = br.readLine().split(" ").map { it.toInt() }
    fun getPockemon(): String = br.readLine()    
    fun getString(): String = br.readLine()
}

fun main() {
    val nameMap = hashMapOf<String, String>()
    val idMap = hashMapOf<String, String>()
    
    val io = IO1620()
    val (pockemonNum, dokamNum) = io.getInt()
    (1..pockemonNum).forEach { idx ->
        val sIdx = idx.toString()
        val name = io.getPockemon()
        nameMap[name] = sIdx
        idMap[sIdx] = name
    }
    repeat(dokamNum) {
        val query = io.getString()
        if (nameMap.containsKey(query)) {
            io.write(nameMap[query]!! + "\n")
        } else if (idMap.containsKey(query)) {
            io.write(idMap[query]!! + "\n")
        }
    }
    io.flush()
    io.close()    
}