[๋ฐฑ์ค€/python] 18111๋ฒˆ : ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ

2021. 8. 7. 22:45

๋ฌธ์ œ

ํŒ€ ๋ ˆ๋“œ์‹œํ”„ํŠธ๋Š” ๋Œ€ํšŒ ์ค€๋น„๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ง€๋ฃจํ•ด์ ธ์„œ ์ƒŒ๋“œ๋ฐ•์Šค ๊ฒŒ์ž„์ธ ‘๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ’๋ฅผ ์ผฐ๋‹ค. ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๋Š” 1 × 1 × 1(์„ธ๋กœ, ๊ฐ€๋กœ, ๋†’์ด) ํฌ๊ธฐ์˜ ๋ธ”๋ก๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ 3์ฐจ์› ์„ธ๊ณ„์—์„œ ์ž์œ ๋กญ๊ฒŒ ๋•…์„ ํŒŒ๊ฑฐ๋‚˜ ์ง‘์„ ์ง€์„ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ์ž„์ด๋‹ค.

๋ชฉ์žฌ๋ฅผ ์ถฉ๋ถ„ํžˆ ๋ชจ์€ lvalue๋Š” ์ง‘์„ ์ง“๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ๊ณ ๋ฅด์ง€ ์•Š์€ ๋•…์—๋Š” ์ง‘์„ ์ง€์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋•…์˜ ๋†’์ด๋ฅผ ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ‘๋•… ๊ณ ๋ฅด๊ธฐ’ ์ž‘์—…์„ ํ•ด์•ผ ํ•œ๋‹ค.

lvalue๋Š” ์„ธ๋กœ N, ๊ฐ€๋กœ M ํฌ๊ธฐ์˜ ์ง‘ํ„ฐ๋ฅผ ๊ณจ๋ž๋‹ค. ์ง‘ํ„ฐ ๋งจ ์™ผ์ชฝ ์œ„์˜ ์ขŒํ‘œ๋Š” (0, 0)์ด๋‹ค. ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์€ ์ด ์ง‘ํ„ฐ ๋‚ด์˜ ๋•…์˜ ๋†’์ด๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ์ข…๋ฅ˜์˜ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  1. ์ขŒํ‘œ (i, j)์˜ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ๋ธ”๋ก์„ ์ œ๊ฑฐํ•˜์—ฌ ์ธ๋ฒคํ† ๋ฆฌ์— ๋„ฃ๋Š”๋‹ค.
  2. ์ธ๋ฒคํ† ๋ฆฌ์—์„œ ๋ธ”๋ก ํ•˜๋‚˜๋ฅผ ๊บผ๋‚ด์–ด ์ขŒํ‘œ (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๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๋†’์ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค.

728x90

BELATED ARTICLES

more