https://www.acmicpc.net/problem/22233
22233번: 가희와 키워드
1번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, floyd, os가 됩니다. 2번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, os가 됩니다. map은 1번째 글과 2번째 글에 중복으로 등장하였음을
www.acmicpc.net
[풀이]
hashSet에 메모장에 적어놓은 키워드를 저장합니다.
이후에 각 작성 글을 (,) 를 기준으로 나누어 hashSet에서 remove를 해주면 되는 간단한 문제입니다.
하지만, 그냥 기본적인 입출력인 readLine()이나 println()를 사용하면 시간초과가 발생합니다.
이를 해결하기 위해서는, 빠른 입출력을 위해 BufferedReader와 BufferedWriter를 사용해야합니다.
기본적인 사용법은 다음과 같습니다.
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main()
{
var br = BufferedReader(InputStreamReader(System.`in`))
var bw = BufferedWriter(OutputStreamWriter(System.`out`))
"""
입출력
"""
bw.flush()
bw.close()
}
[코드]
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.HashSet
fun main()
{
var br = BufferedReader(InputStreamReader(System.`in`))
var bw = BufferedWriter(OutputStreamWriter(System.`out`))
var tmp = br.readLine().split(" ").map {it.toInt()}
var N = tmp[0]
var M = tmp[1]
var keywordHashSet = HashSet<String>()
repeat(N)
{
i ->
keywordHashSet.add(br.readLine())
}
repeat(M)
{
i ->
var tmp = br.readLine().split(",")
for (keyword in tmp)
{
keywordHashSet.remove(keyword)
}
bw.write(keywordHashSet.size.toString() + "\n")
}
bw.flush()
bw.close()
}
'백준' 카테고리의 다른 글
백준 [12015] kotlin (0) | 2023.07.24 |
---|---|
백준 [12100] kotlin (0) | 2023.07.19 |
백준 [27172] kotlin (0) | 2023.07.18 |
백준 [2166] kotlin (0) | 2023.07.17 |
백준 - 자동으로 github에 백준 문제 커밋하기 (0) | 2023.01.17 |