개발새발 - IT 기술블로그
article thumbnail

백준 알고리즘  - 코틀린 풀이

 

 

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"(퇴근) 일 때 집합에서 삭제합니다.

 

마지막으로 문제에 주어진 조건인 내림차순으로 정렬한 후 한 줄씩 출력 해주시면 됩니다.

 

 

 

감사합니다.