20207 : ๋ฌ๋ ฅ#
์๊ฐ์ ํ |
๋ฉ๋ชจ๋ฆฌ์ ํ |
์ ๋ต๋น์จ |
---|---|---|
1์ด |
512MB |
42% |
๋ฌธ์ #
์ํ์ด๋ ์ผ๋ ์ ๋ ์ง๊ฐ 1์ผ๋ถํฐ 365์ผ๋ก ํ์๋์ด์๋ ๋ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์๋ค. ์ํ์ด๋ ๋๋ฌด๋๋ ๊ณํ์ ์ธ ์ฌ๋์ด๋ผ ์ฌ ํด ์ผ์ ์ ๋ชจ๋ ๊ณํํด์ ๋ฌ๋ ฅ์ ํ์ํด๋จ๋ค.
์ฌ๋ฆ์ด ๊ฑฐ์ ๋๋๊ฐ์ ์ฅ๋ง๊ฐ ์์๋์๊ณ , ์ต๊ธฐ๋ก ์ธํด ๋ฌ๋ ฅ์ ํ์ํ ์ผ์ ์ด ์ง์์ง๋ ค๊ณ ํ๋ค. ์ง์์ง๋ ๊ฒ์ ๋ง๊ณ ์ ์ํ์ด๋ ์ผ์ ์ด ์๋ ๊ณณ์๋ง ์ฝํ ์ง๋ฅผ ๋ฌ๋ ฅ์ ๋ถ์ด๋ ค๊ณ ํ๋ค. ํ์ง๋ง ๋๋ฌด ๊ท์ฐฎ์๋ ๋๋จธ์ง, ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅด๊ธฐ๋ก ํ๋ค.
์ฐ์๋ ๋ ์ผ์์ ๊ฐ๊ฐ ์ผ์ ์ด 1๊ฐ ์ด์ ์๋ค๋ฉด ์ด๋ฅผ ์ผ์ ์ด ์ฐ์๋์๋ค๊ณ ํํํ๋ค.
์ฐ์๋ ๋ชจ๋ ์ผ์ ์ ํ๋์ ์ง์ฌ๊ฐํ์ ํฌํจ๋์ด์ผ ํ๋ค.
์ฐ์๋ ์ผ์ ์ ๋ชจ๋ ๊ฐ์ธ๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ์ ํฌ๊ธฐ๋งํผ ์ฝํ ์ง๋ฅผ ์ค๋ฆฐ๋ค.
๋ฌ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
์ผ์ ์ ์์๋ ์ง์ ์ข ๋ฃ๋ ์ง๋ฅผ ํฌํจํ๋ค.
์์์ผ์ด ๊ฐ์ฅ ์์ ์ผ์ ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฑ์์ง๋ค.
์์์ผ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ผ์ ์ ๊ธฐ๊ฐ์ด ๊ธด ๊ฒ์ด ๋จผ์ ์ฑ์์ง๋ค.
์ผ์ ์ ๊ฐ๋ฅํ ์ต ์๋จ์ ๋ฐฐ์น๋๋ค.
์ผ์ ํ๋์ ์ธ๋ก์ ๊ธธ์ด๋ 1์ด๋ค.
ํ๋ฃจ์ ํญ์ 1์ด๋ค.
์์ ๊ทธ๋ฆผ์์์ ๊ฐ์ด ์ผ์ ์ด ์ฃผ์ด์ก๋ค๊ณ ํ์. ์ฌ๊ธฐ์ ์ฝํ ์ง์ ๋ฉด์ ์ ์๋์ ํ๋์ ์์ญ๊ณผ ๊ฐ๋ค.
\(\to\)
์ด๋ ์ฝํ ์ง์ ํฌ๊ธฐ์ ํฉ์ \(3 * 8 + 2 * 2 = 28\)์ด๋ค
input#
์ฒซ์งธ ์ค์ ์ผ์ ์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. (1 โค N โค 1000)
๋์งธ ์ค๋ถํฐ ์ผ์ ์ ๊ฐ์๋งํผ ์์ ๋ ์ง S์ ์ข ๋ฃ ๋ ์ง E๊ฐ ์ฃผ์ด์ง๋ค. (1 โค S โค E โค 365)
output#
์ฝํ ์ง์ ๋ฉด์ ์ ์ถ๋ ฅํ๋ค.
think#
์คํ ๋ฌธ์ ์ฒ๋ผ ๋ณด์ธ๋ค.
python#
import sys, os
problem_num = "20207"
path = os.getcwd() + f"\\txt\\{problem_num}" + ".txt"
sys.stdin = open(path, "r")
input = sys.stdin.readline
# sol
n = int(input())
cal = [0] * 365
for _ in range(n):
s, e = map(int, input().split())
for i in range(s - 1, e):
cal[i] += 1
result = 0
i = 0
while i < 365:
if cal[i] > 0:
width = 0
height = 0
while i < 365 and cal[i] > 0:
width += 1
height = max(height, cal[i])
i += 1
result += width * height
else:
i += 1
print(result)
31
์ผ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ : cal์ ๋จ์ + ํด์ฃผ๋ ๊ณผ์
์ฝํ ๋ฉด์ ๊ณ์ฐ : 365๋ฅผ ๋๋ฉด์ ์์์ while๋ฌธ์ผ๋ก ํ๋ฒ ๋ ๋๋ค. ๊ทธ๋ฆฌ๊ณ cal[i]๊ฐ 0 ์ธ ๊ฒฝ์ฐ์ out๋๋ฉด์ result += ๋ฅผ ํ๋ค.
๋ฉด์ ํฉ์ฐ : ์ด๋ฏธ while ๋ฌธ์ ๋ค๋๋ฉด ๊ณ์ฐ์ด ๋ค ๋์ด์๋ค.
๋์ ์ด๋ฐ์ ์ฝ๋๋ ์ค๊ฐ์ ๊ฒน์น์ง ์๋ ์ผ์ ๋ค์ด ์์ ๊ฒฝ์ฐ, ๋ฉด์ ๊ณ์ฐ์ ๋๋ฝํ ์ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํ๋ค.