Uknow's Lab.
article thumbnail

https://www.acmicpc.net/problem/7785

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

 

난이도 : 실버5
태그 : 자료구조, 해시를 통한 집합과 맵

 

 

설명

 

해시맵을 사용해 풀이할 수 있습니다.

맵이란, (키, 쌍)으로 된 자료구조로써, 파이썬의 경우 딕셔너리가 여기에 해당합니다.

{이름 : true/false} 의 쌍을 갖고, 출입기록이 있으면 true, 퇴근기록이 있으면 false.

이후 맵의 키를 모아 내림차순 정렬을 한 후, 값이 true인 경우만 출력하면 됩니다.

 

 

소스코드

 

import java.io.BufferedReader
import java.io.InputStreamReader

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))

    val n = br.readLine().toInt()
    val map = HashMap<String, Boolean>()

    repeat(n) {
        val line = br.readLine().split(" ")
        map[line[0]] = line[1] == "enter"
    }

    map.keys.sortedDescending().forEach {
        if (map[it]!!) {
            println(it)
        }
    }
}

 

profile

Uknow's Lab.

@유노 Uknow

인생은 Byte와 Double 사이 Char다. 아무말이나 해봤습니다.