๋ฌธ์
์ํ์ด๋ ์ผ๋ ์ ๋ ์ง๊ฐ 1์ผ๋ถํฐ 365์ผ๋ก ํ์๋์ด์๋ ๋ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์๋ค. ์ํ์ด๋ ๋๋ฌด๋๋ ๊ณํ์ ์ธ ์ฌ๋์ด๋ผ ์ฌ ํด ์ผ์ ์ ๋ชจ๋ ๊ณํํด์ ๋ฌ๋ ฅ์ ํ์ํด๋จ๋ค.
์ฌ๋ฆ์ด ๊ฑฐ์ ๋๋๊ฐ์ ์ฅ๋ง๊ฐ ์์๋์๊ณ , ์ต๊ธฐ๋ก ์ธํด ๋ฌ๋ ฅ์ ํ์ํ ์ผ์ ์ด ์ง์์ง๋ ค๊ณ ํ๋ค. ์ง์์ง๋ ๊ฒ์ ๋ง๊ณ ์ ์ํ์ด๋ ์ผ์ ์ด ์๋ ๊ณณ์๋ง ์ฝํ ์ง๋ฅผ ๋ฌ๋ ฅ์ ๋ถ์ด๋ ค๊ณ ํ๋ค. ํ์ง๋ง ๋๋ฌด ๊ท์ฐฎ์๋ ๋๋จธ์ง, ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅด๊ธฐ๋ก ํ๋ค.
- ์ฐ์๋ ๋ ์ผ์์ ๊ฐ๊ฐ ์ผ์ ์ด 1๊ฐ ์ด์ ์๋ค๋ฉด ์ด๋ฅผ ์ผ์ ์ด ์ฐ์๋์๋ค๊ณ ํํํ๋ค.
- ์ฐ์๋ ๋ชจ๋ ์ผ์ ์ ํ๋์ ์ง์ฌ๊ฐํ์ ํฌํจ๋์ด์ผ ํ๋ค.
- ์ฐ์๋ ์ผ์ ์ ๋ชจ๋ ๊ฐ์ธ๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ์ ํฌ๊ธฐ๋งํผ ์ฝํ ์ง๋ฅผ ์ค๋ฆฐ๋ค.
๋ฌ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- ์ผ์ ์ ์์๋ ์ง์ ์ข ๋ฃ๋ ์ง๋ฅผ ํฌํจํ๋ค.
- ์์์ผ์ด ๊ฐ์ฅ ์์ ์ผ์ ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฑ์์ง๋ค.
- ์์์ผ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ผ์ ์ ๊ธฐ๊ฐ์ด ๊ธด ๊ฒ์ด ๋จผ์ ์ฑ์์ง๋ค.
- ์ผ์ ์ ๊ฐ๋ฅํ ์ต ์๋จ์ ๋ฐฐ์น๋๋ค.
- ์ผ์ ํ๋์ ์ธ๋ก์ ๊ธธ์ด๋ 1์ด๋ค.
- ํ๋ฃจ์ ํญ์ 1์ด๋ค.
์์ ๊ทธ๋ฆผ์์์ ๊ฐ์ด ์ผ์ ์ด ์ฃผ์ด์ก๋ค๊ณ ํ์. ์ฌ๊ธฐ์ ์ฝํ ์ง์ ๋ฉด์ ์ ์๋์ ํ๋์ ์์ญ๊ณผ ๊ฐ๋ค.
์ด๋ ์ฝํ ์ง์ ํฌ๊ธฐ์ ํฉ์ 3 x 8 + 2 x 2 = 28์ด๋ค.
์ผ์ ์ ๊ฐ์์ ๊ฐ ์ผ์ ์ ์์๋ ์ง, ์ข ๋ฃ๋ ์ง๊ฐ ์ฃผ์ด์ง ๋ ์ํ์ด๊ฐ ์๋ฅด๋ ์ฝํ ์ง์ ๋ฉด์ ์ ๊ตฌํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ผ์ ์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 1000)
๋์งธ ์ค๋ถํฐ ์ผ์ ์ ๊ฐ์๋งํผ ์์ ๋ ์ง S์ ์ข ๋ฃ ๋ ์ง E๊ฐ ์ฃผ์ด์ง๋ค. (1 โค S โค E โค 365)
์ถ๋ ฅ
์ฝํ ์ง์ ๋ฉด์ ์ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
7
2 4
4 5
5 6
5 7
7 9
11 12
12 12
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
28
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
5
1 9
8 9
4 6
3 4
2 5
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
36
# ํ์ด ๋ฐฉ๋ฒ
๋ ์ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ฐํ๋๊น ๊ฐ๋จํ๊ฒ ํ๋ ธ๋ค
์ธ๋ถ ์กฐ๊ฑด๋ค์ด ๋ง์์ ๋ ๊ตฌํ์ด ์ด๋ ค์ธ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋๋ฐ ๋ฐฐ์ด์ ์ฑ์ฐ๋ ๋ฐฉ๋ฒ์ผ๋ก ํ๋ฉด ๊ทธ ์ธ์ ๊ฒ๋ค์ ๊ณ ๋ คํ ํ์๊ฐ ์์๋ค.
# ์ฝ๋
# 2025-05-10 18:46-19:00
import sys
sys.stdin = open("input.txt","r")
calendar = [0] * 366
# ์ผ์ ์
๋ ฅํ๊ธฐ
n = int(sys.stdin.readline().strip())
for _ in range(n):
s, e = map(int, sys.stdin.readline().split())
for i in range(s, e+1):
calendar[i] += 1
# ์ฝ๋ฉ์ง ๋ฉด์ ๊ตฌํ๊ธฐ
w = 0
h = 0
area = 0
max_h = -1
for i in range(366):
if calendar[i] != 0:
w += 1
if calendar[i] > max_h:
max_h = calendar[i]
else:
area += w * max_h
w = 0; max_h = -1
if w > 0:
area = w * max_h
print(area)
# ์ฐธ๊ณ
๋ฐ๋ก
1
1 365
๋ต: 365
๐ฝ 365๊น์ง ์ผ์ ์ ์ ๋ ์๋ ์ฝ๋์์๋ for๋ฌธ์ด ๋๋๋ฒ๋ ค ์ด๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง if w>0์ ์ถ๊ฐํ์ด์ผ ํ๋ค.
# 2025-05-10 18:46-19:00
import sys
sys.stdin = open("input.txt","r")
calendar = [0] * 366
# ์ผ์ ์
๋ ฅํ๊ธฐ
n = int(sys.stdin.readline().strip())
for _ in range(n):
s, e = map(int, sys.stdin.readline().split())
for i in range(s, e+1):
calendar[i] += 1
# ์ฝ๋ฉ์ง ๋ฉด์ ๊ตฌํ๊ธฐ
w = 0
h = 0
area = 0
max_h = -1
for i in range(366):
if calendar[i] != 0:
w += 1
if calendar[i] > max_h:
max_h = calendar[i]
else:
area += w * max_h
w = 0; max_h = -1
print(area)
์ฒซ ํ์ด ์๋..
์ฝํ ์ง๋ฅผ ๊ฐ๋ก๋ก ๋ถ์ด๋ ค๊ณ ํ๋๋ ๋๋ฌด ๋ณต์กํ๋ค. ์๊ฐํด์ผ ํ๋ ์กฐ๊ฑด๋ค์ด ๋๋ฌด ๋ง์์
# 2025-05-09 11:45 -
import sys
sys.stdin = open("input.txt","r")
n = int(sys.stdin.readline().strip())
calendar = []
for _ in range(n):
s, e = map(int, sys.stdin.readline().split())
calendar.append((s,e))
calendar.sort(key=lambda x: (x[0],x[0]-x[1]))
calendar2 = []
h = 0
for (s1, e1) in calendar:
flag = False
for i, (s2, e2, h2) in enumerate(calendar2):
if e2 < s1:
if e2 + 1 == s1:
calendar2[i] = (s2,e1,h2)
else:
calendar2.append((s1,e1,h2))
flag = True
break
if not flag:
calendar2.append((s1,e1,h));h += 1
print(calendar2)
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Gold IV] 32187 - ๊ธ์ ๋ฐฐ์ (0) | 2025.05.10 |
---|---|
[Gold V] 1931 - ํ์์ค ๋ฐฐ์ (0) | 2025.05.10 |
[Silver II] 15787 - ๊ธฐ์ฐจ๊ฐ ์ด๋ ์ ํค์น๊ณ ์ํ์๋ฅผ (0) | 2025.05.08 |
[Silver II] 12933 - ์ค๋ฆฌ (0) | 2025.05.04 |
[Silver I] 1283 - ๋จ์ถํค ์ง์ (0) | 2025.05.01 |