[BOJ][๐ก5][๋ฐฑ์ค#03020] ๊ฐ๋ฅ๋ฒ๋
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold V
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
๊ฐ๋ฅ๋ฒ๋ ํ ๋ง๋ฆฌ๊ฐ ์ฅ์ ๋ฌผ(์์๊ณผ ์ข ์ ์)๋ก ๊ฐ๋์ฐฌ ๋๊ตด์ ๋ค์ด๊ฐ๋ค. ๋๊ตด์ ๊ธธ์ด๋ N๋ฏธํฐ์ด๊ณ , ๋์ด๋ H๋ฏธํฐ์ด๋ค. (N์ ์ง์) ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ ํญ์ ์์์ด๊ณ , ๊ทธ ๋ค์์๋ ์ข ์ ์๊ณผ ์์์ด ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋ฑ์ฅํ๋ค.
์๋ ๊ทธ๋ฆผ์ ๊ธธ์ด๊ฐ 14๋ฏธํฐ์ด๊ณ ๋์ด๊ฐ 5๋ฏธํฐ์ธ ๋๊ตด์ด๋ค. (์์ ๊ทธ๋ฆผ)
์ด ๊ฐ๋ฅ๋ฒ๋ ๋ ์ฅ์ ๋ฌผ์ ํผํ์ง ์๋๋ค. ์์ ์ด ์ง๋๊ฐ ๊ตฌ๊ฐ์ ์ ํ ๋ค์ ์ผ์ง์ ์ผ๋ก ์ง๋๊ฐ๋ฉด์ ๋ง๋๋ ๋ชจ๋ ์ฅ์ ๋ฌผ์ ํ๊ดดํ๋ค.
์์ ๊ทธ๋ฆผ์์ 4๋ฒ์งธ ๊ตฌ๊ฐ์ผ๋ก ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ๋ ์๊ฐ๋ค๋ฉด ํ๊ดดํด์ผํ๋ ์ฅ์ ๋ฌผ์ ์๋ ์ด ์ฌ๋๊ฐ์ด๋ค. (4๋ฒ์งธ ๊ตฌ๊ฐ์ ๊ธธ์ด๊ฐ 3์ธ ์์๊ณผ ๊ธธ์ด๊ฐ 4์ธ ์์์ ์ค๊ฐ์ง์ ์ ๋งํ๋ค)
ํ์ง๋ง, ์ฒซ ๋ฒ์งธ ๊ตฌ๊ฐ์ด๋ ๋ค์ฏ ๋ฒ์งธ ๊ตฌ๊ฐ์ผ๋ก ๋ ์๊ฐ๋ค๋ฉด ๊ฐ๋ฅ๋ฒ๋ ๋ ์ฅ์ ๋ฌผ ์ผ๊ณฑ๊ฐ๋ง ํ๊ดดํ๋ฉด ๋๋ค.
๋๊ตด์ ํฌ๊ธฐ์ ๋์ด, ๋ชจ๋ ์ฅ์ ๋ฌผ์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋, ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ํ๊ดดํด์ผํ๋ ์ฅ์ ๋ฌผ์ ์ต์๊ฐ๊ณผ ๊ทธ๋ฌํ ๊ตฌ๊ฐ์ด ์ด ๋ช ๊ฐ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ H๊ฐ ์ฃผ์ด์ง๋ค. N์ ํญ์ ์ง์์ด๋ค. (2 โค N โค 200,000, 2 โค H โค 500,000)
๋ค์ N๊ฐ ์ค์๋ ์ฅ์ ๋ฌผ์ ํฌ๊ธฐ๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ฅ์ ๋ฌผ์ ํฌ๊ธฐ๋ H๋ณด๋ค ์์ ์์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ํ๊ดดํด์ผ ํ๋ ์ฅ์ ๋ฌผ์ ์ต์๊ฐ๊ณผ ๊ทธ๋ฌํ ๊ตฌ๊ฐ์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
์์
์์ 1
์ ๋ ฅ
6 7
1
5
3
3
5
1
์ถ๋ ฅ
2 3
์์ 2
์ ๋ ฅ
14 5
1
3
4
2
2
4
3
4
3
3
3
2
3
3
์ถ๋ ฅ
7 2
My Sol
import sys
input = sys.stdin.readline
N, H = map(int, input().split())
ceil = [0]*(H+1)
floor = [0]*(H+1)
for _ in range(N//2):
n = int(input())
floor[n] += 1
n = int(input())
ceil[n] += 1
min_collapse = cur_collapse = N//2
cur_cnt = 1
for h in range(2, H+1):
cur_collapse += (ceil[H+1-h] - floor[h-1])
if cur_collapse > min_collapse: continue
if cur_collapse < min_collapse:
min_collapse = cur_collapse
cur_cnt = 1
else: cur_cnt +=1
print(min_collapse, cur_cnt)
๋ฌธ์ ์์ ์ ์ํ๋ ๋ฌธ์ ํ์ด๋ ์ด๋ถํ์
๋๋ ๋ถ๋ถํฉ
์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๋ฌธ์ ๋ก ์ ์๋์ด ์๋๋ฐ, ์ฌ์ค์ ์๊ณ ๋ฆฌ์ฆ์ด ํ์ ์๋ ๋ฌธ์ ์๋ค.
- ์
๋ ฅ์ ์ฒ๋ฆฌํ๋ค. ์ฒ์ฅ(ceil)๊ณผ ๋ฐ๋ฅ(floor)์ ๊ฐ๊ฐ ๊ตฌ๋ถํด ์
๋ ฅ์ ๋ฐ๋๋ค. ์
๋ ฅ์ด ํฌ๋ฏ๋ก
sys.stdin.readline
์ผ๋ก ์ ๋ ฅ์ ์ฒ๋ฆฌํ๋ค. - ์ฅ์ ๋ฌผ์ 0๋ณด๋ค ํฌ๊ณ H๋ณด๋ค ์์ผ๋ฏ๋ก, ์ฒซ ์ค๊ณผ ๋ ์ค์ ํญ์
N//2
์ ์ฅ์ ๋ฌผ์ ๊ฐ์ง๋ค. ๋๋ฌธ์ ์ด ์๋ก ์ด๊ธฐํ ํด์ค๋ค. - ์๋๋ถํฐ ์๋ก ์ฌ๋ผ๊ฐ๋๋ฐ, ํด๋น ๊ตฌ๊ฐ์์ ์๋กญ๊ฒ ๋ฐ๊ฒฌ๋, ์ฆ ๋ง์ฃผ์น๋ ์ข ์ ์์ ceil์์ ๊ณ์ฐํด ํ์ฌ ์ถฉ๋์ ๋ํด์ฃผ๊ณ , ๋ฐ๋๋ก ์์์ ์ด์ ๊ตฌ๊ฐ๊น์ง ํฌ๊ธฐ๊ฐ ์๋ ๊ฒ์ ๋นผ์ฃผ์ด ์ถฉ๋์์ ๋ฒ์ด๋ฌ์์ ๊ณ์ฐํ๋ค.
- ๋ง์ฝ ํ์ฌ ์ถฉ๋์ ์๊ฐ ์ต์ ์ถฉ๋๋ณด๋ค ํฌ๋ฉด ๋ฌด์๋ฏธํ๋ฏ๋ก continue์ฒ๋ฆฌํ๊ณ , ์์ผ๋ฉด ํด๋น ๊ตฌ๊ฐ์ ์ถฉ๋ ์๋ฅผ ๊ธฐ๋กํ๋ฉฐ ํด๋นํ๋ ์ถฉ๋์ ์๊ฐ 1๊ฐ ๊ตฌ๊ฐ์ด๋ผ๋ ์๋ฏธ๋ก
cur_cnt
๋ฅผ 1๋ก ์ฒ๋ฆฌํ๋ค. ๋ง์ฝ ๊ฐ์ผ๋ฉดcur_cnt
๋ง ํ๋ ์ฌ๋ ค์ฃผ๋ฉด ๋๊ฒ ๋ค. - ์ด๋ฅผ ๋ง์น๊ณ
min_collapse
์cur_cnt
๋ฅผ ๊ฐ๊ฐ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ