dev/algorithm
BOJ / 20207번 / 달력 [Go]
crscnt
2020. 11. 24. 21:00
👩🏻💻 문제
20207번: 달력
수현이는 일년의 날짜가 1일부터 365일로 표시되어있는 달력을 가지고있다. 수현이는 너무나도 계획적인 사람이라 올 해 일정을 모두 계획해서 달력에 표시해놨다. 여름이 거의 끝나가자 장
www.acmicpc.net
✍🏻 풀이
🎨 Go
// https://www.acmicpc.net/problem/20207
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)
scheduleMap := map[int]int{}
for i := 0; i < n; i++ {
var s, e int
fmt.Fscanln(reader, &s, &e)
for j := s; j <= e; j++ {
scheduleMap[j]++
}
}
keys := []int{}
for key := range scheduleMap {
keys = append(keys, key)
}
sort.Ints(keys)
var maxWidth, maxHeight, area int
for i, val := range keys {
if i != 0 && keys[i-1]+1 != val {
area += maxWidth * maxHeight
maxWidth = 0
maxHeight = 0
}
maxWidth++
if scheduleMap[val] > maxHeight {
maxHeight = scheduleMap[val]
}
}
area += maxWidth * maxHeight
fmt.Fprintln(writer, area)
}
728x90