듣보잡 성공
시간 제한메모리 제한제출정답맞은 사람정답 비율
2 초 | 256 MB | 30241 | 12362 | 8944 | 39.703% |
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
예제 입력 1 복사
3 4 ohhenrie charlie baesangwook obama baesangwook ohhenrie clinton
예제 출력 1 복사
2 baesangwook ohhenrie
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.lang.NumberFormatException
import kotlin.math.abs
val br = BufferedReader(InputStreamReader(System.`in`))
fun main()=with(br){
val bw = BufferedWriter(OutputStreamWriter(System.out))
val(n,m) = readLine()!!.split(" ").map{it.toInt()}
val hash = HashMap<String,Int>()
for(i in 0 until n+m){
val name = readLine()
if(hash.containsKey(name)){
hash[name]=hash[name]!!+1
}
else
hash[name]=1
}
// hash맵을 어떻게 sorting 하지 했는데 예전에 공부했던 toList로 변환해서
// sort 하는 방법이 생각이 나서 사용했다.
var list = hash.toList()
var list2 = list.sortedBy { it.first }.sortedWith(Comparator {
d1, d2 -> d2.second - d1.second
})
var count = 0
for(i in 0 until list2.size){
if(list2[i].second==2){
count++
}
}
bw.write("$count\n")
for(i in 0 until list2.size){
if(list2[i].second==2){
bw.write("${list2[i].first}\n")
}
}
bw.flush()
bw.close()
}
|
cs |
속도적 측면에서 성능이 좋지 못해서 아래에 코드로 새롭게 수정하여서 구현하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.lang.NumberFormatException
import kotlin.math.abs
val br = BufferedReader(InputStreamReader(System.`in`))
fun main()=with(br){
val bw = BufferedWriter(OutputStreamWriter(System.out))
val(n,m) = readLine()!!.split(" ").map{it.toInt()}
// HashMap은<,>(pair)형태 HashSet<>(단일)
val hash = HashSet<String>()
var count = 0
val list3 = mutableListOf<String>()
for(i in 0 until n+m){
val name = readLine()
if(hash.contains(name)){
list3.add(name)
count++
}
else {
hash.add(name)
}
}
list3.sort()
bw.write("$count\n")
for(i in 0 until list3.size){
bw.write("${list3[i]}\n")
}
bw.flush()
bw.close()
}
|
cs |
'알고리즘 공부 > 미분류' 카테고리의 다른 글
백준 1780번 with 코틀린 (0) | 2021.08.04 |
---|---|
백준 17626번 with Kotlin (0) | 2021.08.04 |
백준 1676번 with Kotiln (0) | 2021.08.02 |
백준 1107번 with Kotlin (0) | 2021.08.02 |
백준 11723 집합 with Kotlin (0) | 2021.07.31 |