dev/algorithm

BOJ / 7785번 / νšŒμ‚¬μ— μžˆλŠ” μ‚¬λžŒ [Go][Python3]

crscnt 2020. 12. 7. 21:00

πŸ‘©πŸ»‍πŸ’» λ¬Έμ œ

 

7785번: νšŒμ‚¬μ— μžˆλŠ” μ‚¬λžŒ

첫째 쀄에 λ‘œκ·Έμ— 기둝된 μΆœμž… 기둝의 수 n이 μ£Όμ–΄μ§„λ‹€. (2 ≤ n ≤ 106) λ‹€μŒ n개의 μ€„μ—λŠ” μΆœμž… 기둝이 μˆœμ„œλŒ€λ‘œ μ£Όμ–΄μ§€λ©°, 각 μ‚¬λžŒμ˜ 이름이 μ£Όμ–΄μ§€κ³  "enter"λ‚˜ "leave"κ°€ μ£Όμ–΄μ§„λ‹€. "enter"인 κ²½μš°λŠ”

www.acmicpc.net


✍🏻 ν’€μ΄

🎨 Go

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

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var n int
	fmt.Fscanln(reader, &n)

	var workers = map[string]int{}
	for i := 0; i < n; i++ {
		var name, commute string
		fmt.Fscanln(reader, &name, &commute)
		if commute == "enter" {
			workers[name] = 1
		} else if commute == "leave" {
			delete(workers, name)
		}
	}

	var keys = []string{}
	for key, _ := range workers {
		keys = append(keys, key)
	}

	sort.Slice(keys, func(i, j int) bool {
		return keys[i] > keys[j]
	})

	for _, key := range keys {
		fmt.Fprintln(writer, key)
	}
}

🎨 Python3

# https://www.acmicpc.net/problem/7785
import sys

if __name__ == "__main__":
    n = int(sys.stdin.readline())

    workers = {}
    for i in range(n):
        name, commute = sys.stdin.readline().split()
        if commute == "enter":
            workers[name] = 1
        elif commute == "leave":
            del workers[name]

    for i in sorted(list(workers.items()), reverse=True):
        print(i[0])
728x90