https://www.acmicpc.net/problem/1380
난이도 : 실버 5
태그 : 구현, 문자열
설명
학생의 이름이 두 번 나오면 귀걸이를 돌려 받은 것이고,
한 번만 나온다면 귀걸이를 압수당하고 돌려받지 못한 것입니다.
저는 Student라는 클래스를 하나 만들어 학생의 이름과 이름을 불린 횟수를 체크하였습니다.
소스코드
import java.io.BufferedReader
import java.io.InputStreamReader
data class Student(var name: String, var cnt: Int)
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
var cnt = 0
while (true) {
cnt++
val n = br.readLine().toInt()
if (n == 0) break
val students = Array(n) { Student("", 0) }
repeat(n) {
val name = br.readLine()
students[it].name = name
}
repeat(2 * n - 1) {
val line = br.readLine().split(" ")
val idx = line[0].toInt() - 1
students[idx].cnt++
}
for (i in 0 until n) {
if (students[i].cnt == 1) {
println("$cnt ${students[i].name}")
break
}
}
}
}
한 명만 귀걸이를 돌려받지 못하므로,
이름은 총 2 * (학생수) - 1 번 불립니다.
각 학생의 이름이 나온 횟수를 카운트하고,
이름이 1번 불린 학생(귀걸이를 돌려받지 못한 학생)을 출력합니다.
'코딩테스트 > Kotlin' 카테고리의 다른 글
[백준 2720번] [Kotlin] 세탁소 사장 동혁 (0) | 2023.04.16 |
---|---|
[백준 1325번] [Kotlin] 효율적인 해킹 (0) | 2023.04.16 |
[백준 1613] [Kotlin] 역사 (0) | 2023.04.03 |
[백준 2294번] [Kotlin] 동전 2 (0) | 2023.04.01 |
[백준 10102번] [Kotlin] 개표 (0) | 2023.03.31 |