[백준] 1620번 나는야 포켓몬마스터 이다솜

Greenddoovie·2021년 12월 16일
0

백준

목록 보기
10/30

1620번 나는야 포켓몬 마스터 이다솜

접근방법

도감에 순서대로 넣고 이름을 검색하면 번호가 나오고, 번호를 검색하면 이름이 나오는 구조이므로 array사용해서 하는 것 보다는 Map을 이용해서 빠르게 조회하는 것이 좋다고 판단하였습니다.

따라서, Pocketmon Name Map과 Pocketmon Id Map을 만들어서 풀었습니다.

시간 복잡도

전체 도감 삽입: 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()    
}
profile
기초를 이해하면 세상이 다르게 보인다

0개의 댓글