https://www.acmicpc.net/problem/28018
๋ํ์์ ํด๊ฒฐ ๋ชปํ๊ณ ๋๋๊ณ ํด๊ฒฐํ ๋ฌธ์ . ์ฒ์ ๋ฃ๋ ์๊ณ ๋ฆฌ์ฆ์ด์ด์ ์ ๊ธฐํ๋ค.(๋์ ํฉ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ค)
์์ง๋ ๋ชจ๋ฅด๋๊ฒ ๋ง์๊ฑฐ ๊ฐ๋ค, ๋ฐฐ์์๋ ๋์ด ์๋ ๊ฑฐ ๊ฐ๋ค.
์์ด๋์ด
๋ฌธ์ ๋ฅผ ๋ณด๊ณ ์๊ฐ์ ํ์ ๊ณ ๋ คํ์ง์์ผ๋ฉด ์ ๋ง ์ฌ์ด ๋์ด๋๋ค. ํ์ง๋ง ์ ๋ ฅ๊ฐ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์๊ฐ ๊ณ ๋ฏผ์ ํด๋ด์ผ ๋๋ค.
์ด ์์ด๋์ด๋ฅผ ์ฝ๊ฒ ๋งํ๋ฉด, ๋ค์ด์ค๊ณ ๋๊ฐ๋ ์๊ฐ๋ง ์ ์ฅํ๋ฉด ๋๋ค.
๋จผ์ ์ต๋ ์๊ฐ(1000000) ํฌ๊ธฐ์ 1์ฐจ์ ๋ฆฌ์คํธ๋ฅผ ์ ์ธํ๊ณ ๊ฐ์ 0์ผ๋ก ์ด๊ธฐํํด ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ฅ ์๊ฐ, ํด์ฅ ์๊ฐ์ ๋ง๊ฒ +1์ ํด์ค๋ค.
์์ 1 ๊ฐ์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ๋ค.
in_time = [0, 1, 1, 0, 0,...]
out_time = [0, 0, 0, 1, 1,...]
์ด๋ ๊ฒ ๋ฆฌ์คํธ ๋ ๊ฐ๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ DP, ์ ํ์์ ์ธ์์ฃผ๋ฉด ๋๋ค.
for i in range(1, 1000001):
D[i] = D[i - 1] + in_time[i] - out_time[i - 1]
๋ฌธ์ ์กฐ๊ฑด์์ "๊ฐ ์ข์์ ์ฌ์ฉ์ด ์ข ๋ฃ๋๋ ์๊ฐ์ ๊ณง๋ฐ๋ก ์ ํ๋ ์ ์๋ค."๋ผ๊ณ ํ์ผ๋ ํด์ฅ์๊ฐ์ i - 1 ์๊ฐ์ ๋นผ์ค๋ค. ์ด๋ ๊ฒ ํ๋ฉด
D [n]์ n๋ฒ์งธ ์๊ฐ์ ์ ํํ ์ ์๋ ์ข์ ์(์ฌ๋ ์๋ผ๊ณ ์๊ฐํด๋ ๋ ๋ฏ)๊ฐ ๋๋ค.
์ ๊ทธ๋ฆฌ๊ณ ๋๋ํ ๋ถ๋ค์ ์๊ฒ ์ง๋ง ์ ๋ ๊ฒ ๋ฆฌ์คํธ ๋ ๊ฐ ์ฌ์ฉ ์ ํด๋ ๋๋ค. out time๊ฐ๋ค์ in_time์ -1๋ก ์ ์ฅํ๋ฉด ๋๋ค. ์๊ฐ์ ๋ง๊ฒ.
๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋๋ํ ๊ฑฐ ๊ฐ์ ๋ด ๋ฐฉ์์ผ๋ก ์์ฑํ๋ค.
์ ์ฒด ์ฝ๋
import sys
N = int(input())
in_time = [0] * 1000001
out_time = [0] * 1000001
D = [0] * 1000001
for _ in range(N):
a, b = map(int, sys.stdin.readline().split())
in_time[a] += 1
out_time[b] += 1
for i in range(1, 1000001):
D[i] = D[i - 1] + in_time[i] - out_time[i - 1]
Q = int(sys.stdin.readline().rstrip())
Qlist = [int(x) for x in sys.stdin.readline().split()]
for q in Qlist:
print(D[q])
์ฝ๋ ์ค๋ช
for _ in range(N):
a, b = map(int, sys.stdin.readline().split())
in_time[a] += 1
out_time[b] += 1
์์์ ๋งํ ๊ฒ์ฒ๋ผ ์ ์ฅ, ํด์ฅ ๊ฐ๊ฐ ๋ฐ๋ก ๋ฐ์์ค๋ค.
for i in range(1, MAXTIME):
D[i] = D[i - 1] + in_time[i] - out_time[i - 1]
๊ทธ๋ฆฌ๊ณ ์ ํ์์ ์ธ์์ค๋ค. ์ด๋ ๊ฒ (์ด๋ฏธ ์๋ ์ฌ๋ + ์ ์ฅํ ์ฌ๋๋ค - ๋๊ฐ ์ฌ๋๋ค) ๊ฐ๋จํ๊ฒ ๊ตฌํ ๊ฐ๋ฅํ๋ค.
์ง๊ธ ๋ณด๋ฉด ๊ฐ๋จํ ์์ด๋์ด์ง๋ง, ํ ์คํธ ๊ฐ์ ํ๊ฒฝ์์๋ ๊ตฌํํ๊ธฐ ์ฝ์ง ์๋ค.
์คํ๋ ค ๊ธฐ์กด์ ๋ด๊ฐ ์๊ณ ์๋ ๋ฐฉ๋ฒ๋ง ๊ณ ์งํ๋ ๊ฑฐ ๊ฐ๋ค. ์... ๋ง์ ์ฐ์ต, ์ฒดํ ๊ทธ๋ฆฌ๊ณ ์ค์ ๊ฒฝํ์ด ๋ต์ธ ๊ฑฐ ๊ฐ๋ค.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 2839 ์คํ ๋ฐฐ๋ฌ (feat.DP) (python ํ์ด์ฌ) (0) | 2023.08.20 |
---|---|
[๋ฐฑ์ค] 2447 ๋ณ ์ฐ๊ธฐ - 10 (python ํ์ด์ฌ) (0) | 2023.07.30 |
[๋ฐฑ์ค] 28303 ์์ (+ ์ฐ์ ๊ตฌ๊ฐ์ ์ต๋ ํฉ) (python ํ์ด์ฌ) (0) | 2023.07.05 |
[๋ฐฑ์ค] 28286 ์ฌ์ฑ์ ์ ๊ธฐ๋ค๋ฆฌ๋ ์ค (python ํ์ด์ฌ) (0) | 2023.07.05 |
[๋ฐฑ์ค] 28298 ๋ ํํ ํ์ผ ์์น ๋ฌธ์ (python ํ์ด์ฌ) (0) | 2023.07.04 |