๐ ๋ฌธ์
N๊ฐ์ ์ฒด์ปค๊ฐ ์์ฒญ ํฐ ๋ณด๋ ์์ ์๋ค. i๋ฒ ์ฒด์ปค๋ (xi, yi)์ ์๋ค. ๊ฐ์ ์นธ์ ์ฌ๋ฌ ์ฒด์ปค๊ฐ ์์ ์๋ ์๋ค. ์ฒด์ปค๋ฅผ ํ ๋ฒ ์์ง์ด๋ ๊ฒ์ ๊ทธ ์ฒด์ปค๋ฅผ ์, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ, ์๋ ์ค์ ํ ๋ฐฉํฅ์ผ๋ก ํ ์นธ ์์ง์ด๋ ๊ฒ์ด๋ค.
์ ๋ ฅ์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฐ ์ฒด์ปค์ x์ขํ์ y์ขํ๊ฐ ์ฃผ์ด์ง๋ค. ์ด ๊ฐ์ 1,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ์ฒซ์งธ ์ค์ ์ N๊ฐ๋ฅผ ์ถ๋ ฅํ๋ค. k๋ฒ์งธ ์๋ ์ ์ด๋ k๊ฐ์ ์ฒด์ปค๊ฐ ๊ฐ์ ์นธ์ ๋ชจ์ด๋๋ก ์ฒด์ปค๋ฅผ ์ด๋ํด์ผ ํ๋ ์ต์ ํ์์ด๋ค.
|
โ ๋ด ๋ต
- answer ์ ์ธ ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ ๊ฐ์ฅ ํฐ ๊ฑฐ๋ฆฌ์ ๊ฐ์ผ๋ก ์ด๊ธฐํ
- ์ฃผ์ด์ง ์ขํ๊ฐ(x, y) ์ค ํ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ์ฌ sorting
- ์์ ๊ฐ๋ถํฐ ๋ํด๊ฐ๋ฉฐ answer์ ํฌ๊ธฐ ๋น๊ต
import sys
num = int(input())
answer = [int(1e9)]*num
points = [list(map(int,sys.stdin.readline().strip().split())) for _ in range(num)]
x_set = set(x for x, y in points)
y_set = set(y for x, y in points)
for x in x_set:
for y in y_set:
dist_arr = []
for src_point in points:
dist = abs(x - src_point[0]) + abs(y - src_point[1])
dist_arr.append(dist)
dist_arr = sorted(dist_arr)
for k in range(num):
if sum(dist_arr[:k+1]) < answer[k]:
answer[k] = sum(dist_arr[:k+1])
print(' '.join(map(str, answer)))
https://www.acmicpc.net/problem/1090
์ ์ฒซ ํ๋ํฐ๋.. ๊ฐ๊ฐ๋ฌด๋์ ๋๋ค
๋ฐ์ํ
'Dev > PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PS] 14233 ๋ณด์ ๋๋ (0) | 2024.09.25 |
---|---|
[PS] 1764 ๋ฃ๋ณด์ก (0) | 2024.09.20 |
[PS] 11723 ์งํฉ (0) | 2024.09.20 |