백준 알고리즘 - 코틀린 풀이
https://www.acmicpc.net/problem/7785
7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
문제
정답
fun main() = with(System.`in`.bufferedReader()) {
val n = readLine().toInt()
val hashSet = HashSet<String>()
repeat(n) {
val (name, move) = readLine().split(" ")
if (hashSet.add(name)) {
hashSet.add(name)
} else {
if (move == "leave")
hashSet.remove(name)
}
}
hashSet.sortedDescending().forEach {
println(it)
}
}
풀이
7785번 문제는 직원들의 출퇴근을 검사하여, 출근하였지만 아직 퇴근하지 않은 직원들의 이름을 출력하는 문제입니다.
HashSet<String> 객체 타입의 변수를 생성하여 중복을 허용하지 않는 집합을 생성하였습니다.
그 다음, n번만큼 반복하며 name에 add가 가능하다면(출근하지 않았다면) 추가합니다.
만약 현재 집합에 똑같은 name이 있다면(출근한 상태라면) move가 "leave"(퇴근) 일 때 집합에서 삭제합니다.
마지막으로 문제에 주어진 조건인 내림차순으로 정렬한 후 한 줄씩 출력 해주시면 됩니다.
감사합니다.
'백준 알고리즘' 카테고리의 다른 글
[백준] 제로(10773번) - 코틀린 풀이 (0) | 2023.10.05 |
---|---|
[백준] 숫자 카드2(10816번) - 코틀린 풀이 (0) | 2023.10.04 |
[백준 알고리즘] 수학은 비대면(19532번) - 코틀린 풀이 (0) | 2023.09.26 |
[백준 알고리즘] 행렬 덧셈(2738번) - 코틀린 풀이 (0) | 2023.09.25 |
[백준 알고리즘] 대지(9063번) - 코틀린 풀이 (0) | 2023.09.22 |