[๋ฐฑ์ค/python] 18111๋ฒ : ๋ง์ธํฌ๋ํํธ
๋ฌธ์
ํ ๋ ๋์ํํธ๋ ๋ํ ์ค๋น๋ฅผ ํ๋ค๊ฐ ์ง๋ฃจํด์ ธ์ ์๋๋ฐ์ค ๊ฒ์์ธ ‘๋ง์ธํฌ๋ํํธ’๋ฅผ ์ผฐ๋ค. ๋ง์ธํฌ๋ํํธ๋ 1 × 1 × 1(์ธ๋ก, ๊ฐ๋ก, ๋์ด) ํฌ๊ธฐ์ ๋ธ๋ก๋ค๋ก ์ด๋ฃจ์ด์ง 3์ฐจ์ ์ธ๊ณ์์ ์์ ๋กญ๊ฒ ๋ ์ ํ๊ฑฐ๋ ์ง์ ์ง์ ์ ์๋ ๊ฒ์์ด๋ค.
๋ชฉ์ฌ๋ฅผ ์ถฉ๋ถํ ๋ชจ์ lvalue๋ ์ง์ ์ง๊ธฐ๋ก ํ์๋ค. ํ์ง๋ง ๊ณ ๋ฅด์ง ์์ ๋ ์๋ ์ง์ ์ง์ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ์ ๋์ด๋ฅผ ๋ชจ๋ ๋์ผํ๊ฒ ๋ง๋๋ ‘๋ ๊ณ ๋ฅด๊ธฐ’ ์์ ์ ํด์ผ ํ๋ค.
lvalue๋ ์ธ๋ก N, ๊ฐ๋ก M ํฌ๊ธฐ์ ์งํฐ๋ฅผ ๊ณจ๋๋ค. ์งํฐ ๋งจ ์ผ์ชฝ ์์ ์ขํ๋ (0, 0)์ด๋ค. ์ฐ๋ฆฌ์ ๋ชฉ์ ์ ์ด ์งํฐ ๋ด์ ๋ ์ ๋์ด๋ฅผ ์ผ์ ํ๊ฒ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ ์ข ๋ฅ์ ์์ ์ ํ ์ ์๋ค.
- ์ขํ (i, j)์ ๊ฐ์ฅ ์์ ์๋ ๋ธ๋ก์ ์ ๊ฑฐํ์ฌ ์ธ๋ฒคํ ๋ฆฌ์ ๋ฃ๋๋ค.
- ์ธ๋ฒคํ ๋ฆฌ์์ ๋ธ๋ก ํ๋๋ฅผ ๊บผ๋ด์ด ์ขํ (i, j)์ ๊ฐ์ฅ ์์ ์๋ ๋ธ๋ก ์์ ๋๋๋ค.
1๋ฒ ์์ ์ 2์ด๊ฐ ๊ฑธ๋ฆฌ๋ฉฐ, 2๋ฒ ์์ ์ 1์ด๊ฐ ๊ฑธ๋ฆฐ๋ค. ๋ฐค์๋ ๋ฌด์์ด ๋ชฌ์คํฐ๋ค์ด ๋์ค๊ธฐ ๋๋ฌธ์ ์ต๋ํ ๋นจ๋ฆฌ ๋ ๊ณ ๋ฅด๊ธฐ ์์ ์ ๋ง์ณ์ผ ํ๋ค. ‘๋ ๊ณ ๋ฅด๊ธฐ’ ์์ ์ ๊ฑธ๋ฆฌ๋ ์ต์ ์๊ฐ๊ณผ ๊ทธ ๊ฒฝ์ฐ ๋ ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์์ค.
๋จ, ์งํฐ ์๋์ ๋๊ตด ๋ฑ ๋น ๊ณต๊ฐ์ ์กด์ฌํ์ง ์์ผ๋ฉฐ, ์งํฐ ๋ฐ๊นฅ์์ ๋ธ๋ก์ ๊ฐ์ ธ์ฌ ์ ์๋ค. ๋ํ, ์์ ์ ์์ํ ๋ ์ธ๋ฒคํ ๋ฆฌ์๋ B๊ฐ์ ๋ธ๋ก์ด ๋ค์ด ์๋ค. ๋ ์ ๋์ด๋ 256๋ธ๋ก์ ์ด๊ณผํ ์ ์์ผ๋ฉฐ, ์์๊ฐ ๋ ์ ์๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N, M, B๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ M, N ≤ 500, 0 ≤ B ≤ 6.4 × 107)
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฐ๊ฐ M๊ฐ์ ์ ์๋ก ๋ ์ ๋์ด๊ฐ ์ฃผ์ด์ง๋ค. (i + 2)๋ฒ์งธ ์ค์ (j + 1)๋ฒ์งธ ์๋ ์ขํ (i, j)์์์ ๋ ์ ๋์ด๋ฅผ ๋ํ๋ธ๋ค. ๋ ์ ๋์ด๋ 256๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ ์ ๊ณ ๋ฅด๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ๋ ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์์ค. ๋ต์ด ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ๊ทธ์ค์์ ๋ ์ ๋์ด๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ์ถ๋ ฅํ์์ค.
์ ๋ต
import sys
input = sys.stdin.readline
count, height = -1, 0
n, m, b = map(int, input().split())
land = []
for _ in range(n):
land.extend(list(map(int, input().split())))
land.sort(reverse=True)
for h in range(land[-1], land[0]+1): # h = ๋ชฉํ ๋์ด
c, tmp = 0, b
for l in land: # l = ์ขํ์ ๋์ด
if l > h: # ๋ธ๋ก ์ ๊ฑฐ
c += (l-h)*2
tmp += l-h
elif l < h: # ๋ธ๋ก ์๊ธฐ
c += h-l
tmp -= h-l
if tmp < 0:
break
if count == -1 or c <= count:
count = c
height = h
print(count, height)
์ด ๋ฌธ์ ์์ ๊ฐ์ฅ ๋์น๊ธฐ ์ฌ์ด ๋ถ๋ถ ๐ฅ๐ฅ๋ต์ด ์ฌ๋ฌ ๊ฐ ์๋ค๋ฉด ๊ทธ์ค์์ ๋ ์ ๋์ด๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ์ถ๋ ฅํ์์ค.๐ฅ๐ฅ
์ขํ ๊ฐ์ ์๊ด ์์ผ๋ ์ ์ด์ ์ ๋ ฅ๋ฐ์ ๋ extend๋ก ์ถ๊ฐํ์ฌ ์ผ์ฐจ์ ๋ฆฌ์คํธ๋ก ๋ง๋ค์๋ค.
์ธ๋ฒคํ ๋ฆฌ์ ๋ธ๋ก์ด ๋ถ์กฑํ ๊ฒฝ์ฐ๋ฅผ ํ๋จํ๊ธฐ ์ํด
์ธ๋ฒคํ ๋ฆฌ์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ๋จผ์ ์์ ํ ๋ค์
์ธ๋ฒคํ ๋ฆฌ์์ ๊บผ๋ด๋ ๊ฒฝ์ฐ๋ฅผ ์์ ํ๊ธฐ ์ํด land๋ฅผ sortํ์๋ค.
๊ฐ์ฅ ๋ฎ์ ๋ธ๋ก์ ๋์ด๋ถํฐ ๊ฐ์ฅ ๋์ ๋ธ๋ก์ ๋์ด๊น์ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์
sortํ์ผ๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ ๋ฒ์๋ฅผ land[-1], land[0]+1 ๋ก ์ก์๋ค.
์ด์ ๋ธ๋ก์ ํ๋ํ๋์ฉ ์ดํด๋ณด๋ฉฐ ๋ธ๋ก์ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ์ ์ ๊ฑฐํ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ ํด ์์ ํ๋ค.
๋ชจ๋ ์์ ์ด ๋๋๊ณ ์ธ๋ฒคํ ๋ฆฌ tmp์ ๊ฐ์ด ์์์ธ ๊ฒฝ์ฐ
ํด๋น ๋์ด๋ก ์์ ํ ์ ์๋ค๋ ์๋ฏธ์ ๋ ๋์ ๋์ด๋ ๋ถ๊ฐ๋ฅํ๋ค๋ ์๋ฏธ์ด๋ฏ๋ก break๋ฅผ ํตํด ๋ฐ๋ณต๋ฌธ์ ๋น ์ ธ๋๊ฐ๋ค.
์๋ ๊ฒฝ์ฐ ์๋์ if๋ฌธ์ ์คํ ํ๋๋ฐ
count์ ์ด๊ธฐ๊ฐ์ธ -1 ์ด๊ฑฐ๋ ์ด์ ์ count ๊ฐ๋ณด๋ค ํ์ฌ์ c ๊ฐ ๋ ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด
count ์ height ๋ฅผ ํ์ฌ์ ๊ฒฝ์ฐ๋ก ๋ฐ๊ฟ์ค๋ค.
๐ฅ ์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์ c์ count๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ ๋ฐ๊ฟ์ค์ผ height๊ฐ ๊ฐ์ฅ ๋์ ๋์ด๊ฐ ๋ ์ ์๋ค๋ ์ ์ด๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 1427๋ฒ : ์ํธ์ธ์ฌ์ด๋ (0) | 2021.08.10 |
---|---|
[๋ฐฑ์ค/python] 1107๋ฒ : ๋ฆฌ๋ชจ์ปจ (0) | 2021.08.10 |
[๋ฐฑ์ค/python] 1244๋ฒ : ์ค์์น ์ผ๊ณ ๋๊ธฐ (0) | 2021.08.07 |
[๋ฐฑ์ค/python] 9095๋ฒ : 1, 2, 3 ๋ํ๊ธฐ (0) | 2021.08.06 |
[๋ฐฑ์ค/python] 1463๋ฒ : 1๋ก ๋ง๋ค๊ธฐ (0) | 2021.07.29 |