https://www.acmicpc.net/problem/2304
2304๋ฒ: ์ฐฝ๊ณ ๋ค๊ฐํ
์ฒซ ์ค์๋ ๊ธฐ๋ฅ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 1 ์ด์ 1,000 ์ดํ์ด๋ค. ๊ทธ ๋ค์ N ๊ฐ์ ์ค์๋ ๊ฐ ์ค์ ๊ฐ ๊ธฐ๋ฅ์ ์ผ์ชฝ ๋ฉด์ ์์น๋ฅผ ๋ํ๋ด๋ ์ ์ L๊ณผ ๋์ด๋ฅผ ๋ํ๋ด๋ ์ ์ H๊ฐ ํ ๊ฐ์
www.acmicpc.net
๋ฌธ์
N ๊ฐ์ ๋ง๋ ๊ธฐ๋ฅ์ด ์ผ๋ ฌ๋ก ์ธ์์ ธ ์๋ค. ๊ธฐ๋ฅ๋ค์ ํญ์ ๋ชจ๋ 1 m์ด๋ฉฐ ๋์ด๋ ๋ค๋ฅผ ์ ์๋ค. ์ด ๊ธฐ๋ฅ๋ค์ ์ด์ฉํ์ฌ ์์ฒ ๋ก ๋ ์ฐฝ๊ณ ๋ฅผ ์ ์ํ๋ ค๊ณ ํ๋ค. ์ฐฝ๊ณ ์๋ ๋ชจ๋ ๊ธฐ๋ฅ์ด ๋ค์ด๊ฐ๋ค. ์ด ์ฐฝ๊ณ ์ ์ง๋ถ์ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ ๋ค.
- ์ง๋ถ์ ์ํ ๋ถ๋ถ๊ณผ ์์ง ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๋ชจ๋ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ค.
- ์ง๋ถ์ ์ํ ๋ถ๋ถ์ ๋ฐ๋์ ์ด๋ค ๊ธฐ๋ฅ์ ์๋ฉด๊ณผ ๋ฟ์์ผ ํ๋ค.
- ์ง๋ถ์ ์์ง ๋ถ๋ถ์ ๋ฐ๋์ ์ด๋ค ๊ธฐ๋ฅ์ ์๋ฉด๊ณผ ๋ฟ์์ผ ํ๋ค.
- ์ง๋ถ์ ๊ฐ์ฅ์๋ฆฌ๋ ๋ ์ ๋ฟ์์ผ ํ๋ค.
- ๋น๊ฐ ์ฌ ๋ ๋ฌผ์ด ๊ณ ์ด์ง ์๋๋ก ์ง๋ถ์ ์ด๋ค ๋ถ๋ถ๋ ์ค๋ชฉํ๊ฒ ๋ค์ด๊ฐ ๋ถ๋ถ์ด ์์ด์ผ ํ๋ค.
๊ทธ๋ฆผ 1์ ์ฐฝ๊ณ ๋ฅผ ์์์ ๋ณธ ๋ชจ์ต์ ๊ทธ๋ฆฐ ๊ฒ์ด๋ค. ์ด ๊ทธ๋ฆผ์์ ๊ตต์ ์ ์ผ๋ก ํ์๋ ๋ถ๋ถ์ด ์ง๋ถ์ ํด๋น๋๊ณ , ์ง๋ถ๊ณผ ๋ ์ผ๋ก ๋๋ฌ์ธ์ธ ๋ค๊ฐํ์ด ์ฐฝ๊ณ ๋ฅผ ์์์ ๋ณธ ๋ชจ์ต์ด๋ค. ์ด ๋ค๊ฐํ์ ์ฐฝ๊ณ ๋ค๊ฐํ์ด๋ผ๊ณ ํ์.

์ฐฝ๊ณ ์ฃผ์ธ์ ์ฐฝ๊ณ ๋ค๊ฐํ์ ๋ฉด์ ์ด ๊ฐ์ฅ ์์ ์ฐฝ๊ณ ๋ฅผ ๋ง๋ค๊ธฐ๋ฅผ ์ํ๋ค. ๊ทธ๋ฆผ 1์์ ์ฐฝ๊ณ ๋ค๊ฐํ์ ๋ฉด์ ์ 98 ใก์ด๊ณ , ์ด ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ์์ ์ฐฝ๊ณ ๋ค๊ฐํ์ด๋ค.
๊ธฐ๋ฅ๋ค์ ์์น์ ๋์ด๊ฐ ์ฃผ์ด์ง ๋, ๊ฐ์ฅ ์์ ์ฐฝ๊ณ ๋ค๊ฐํ์ ๋ฉด์ ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ์ค์๋ ๊ธฐ๋ฅ์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ N์ด ์ฃผ์ด์ง๋ค. N์ 1 ์ด์ 1,000 ์ดํ์ด๋ค. ๊ทธ ๋ค์ N ๊ฐ์ ์ค์๋ ๊ฐ ์ค์ ๊ฐ ๊ธฐ๋ฅ์ ์ผ์ชฝ ๋ฉด์ ์์น๋ฅผ ๋ํ๋ด๋ ์ ์ L๊ณผ ๋์ด๋ฅผ ๋ํ๋ด๋ ์ ์ H๊ฐ ํ ๊ฐ์ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. L๊ณผ H๋ ๋ ๋ค 1 ์ด์ 1,000 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ์ฐฝ๊ณ ๋ค๊ฐํ์ ๋ฉด์ ์ ๋ํ๋ด๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.

๋ฌธ์ ํ์ด
import sys
n=int(sys.stdin.readline())
# ์ ์ฒด ๊ธฐ๋ฅ์ด ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค๊น์ง ์๋์ง
maxL=-1e9
# ๊ฐ์ฅ ๋์ ๊ธฐ๋ฅ ๋์ด
maxH=-1e9
# ๊ฐ์ฅ ๋์ ๊ธฐ๋ฅ ๋์ด์ ์ ์ผ ๋ค์ชฝ ์ธ๋ฑ์ค
maxIndex=0
heights=[]
for _ in range(n):
l,h=map(int, sys.stdin.readline().strip().split(' '))
heights.append((l,h))
if l>maxL:
maxL=l
if h>=maxH:
maxH=h
maxIndex=l
size=[0]*(maxL+1)
for l,h in heights:
size[l]=h
left_ans=0
left_cur_max=0
for idx in range(maxIndex+1):
if size[idx]>left_cur_max:
left_cur_max=size[idx]
left_ans+=left_cur_max
right_ans=0
right_cur_max=0
for idx in range(maxL,maxIndex,-1):
if size[idx]>right_cur_max:
right_cur_max=size[idx]
right_ans+=right_cur_max
print(left_ans+right_ans)
- ์ด๋ฌํ ์ ํ์ ๋ฌธ์ ๊ฐ ์์ฃผ ๋ณด์ด๋ ๊ฑธ ๋ณด๋ฉด ์ฝ๋ฉํ ์คํธ ๋น์ถ ์ ํ์ด๊ธด ํ๊ฐ๋ณด๋ค!
- ์ฐ์ , ๋๋ ๊ฐ์ฅ ๋์ ๊ธฐ๋ฅ์ด ์์นํ๋ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ ๋์ด์ ์ค๋ฅธ์ชฝ ๋์ด๋ฅผ ๋ฐ๋ก ๊ณ์ฐํ๋ค.
- ๋ฌธ์ ์์ ์ ์ํ ์์ 1๋ฒ์ ์ฌ์ฉํด์ ๋ค์ ๊ทธ๋ฆผ์ผ๋ก ์ค๋ช ํด๋ณด๊ฒ ๋ค.
์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ์ชฝ ๋์ด์ ๊ฒฝ์ฐ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ์์ํด์ ํ์ฌ ๊ธฐ๋ฅ๋ณด๋ค ๋ ๋์ ๊ธฐ๋ฅ์ด ๋์ฌ ๋๊น์ง ํ์ฌ ๊ธฐ๋ฅ ๊ฐ์ left_ans ๊ฐ์ ๋ํด์ฃผ๊ณ , ๋ ๋์ ๊ฐ์ด ๋์ค๋ฉด ํ์ฌ ๊ธฐ๋ฅ ๊ฐ์ ๋ ๋์ ๊ฐ์ผ๋ก ๊ฐฑ์ ํด์ฃผ๊ณ , ๋ค์ ํ์ฌ ๊ธฐ๋ฅ๋ณด๋ค ๋ ๋์ ๊ฐ์ด ๋์ฌ ๋๊น์ง ํด๋น ๊ฐ์ ๋ํด์ค๋ค.
์ค๋ฅธ์ชฝ ๋์ด๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๋ํด์ฃผ๋ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ถํฐ ์์ํด์ ๊ฐ์ฅ ๋์ ๊ธฐ๋ฅ ๊ฐ์ ์ธ๋ฑ์ค ์ ๋ฐฉํฅ์ผ๋ก ํ์ํ๋ค.
'์๊ณ ๋ฆฌ์ฆ > ๋ธ๋ฃจํธํฌ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค 1062 ๐ฅ] ๊ฐ๋ฅด์นจ (0) | 2023.09.28 |
---|---|
[๋ฐฑ์ค 19942 ๐ฅ] ๋ค์ด์ดํธ (0) | 2023.09.12 |
[๋ฐฑ์ค 1107 ๐ฅ] ๋ฆฌ๋ชจ์ปจ (0) | 2023.08.21 |