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