๋ฌธ์
ํฌ๊ธฐ๊ฐ N×N์ธ ๋์๊ฐ ์๋ค. ๋์๋ 1×1ํฌ๊ธฐ์ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๋์์ ๊ฐ ์นธ์ ๋น ์นธ, ์นํจ์ง, ์ง ์ค ํ๋์ด๋ค. ๋์์ ์นธ์ (r, c)์ ๊ฐ์ ํํ๋ก ๋ํ๋ด๊ณ , rํ c์ด ๋๋ ์์์๋ถํฐ r๋ฒ์งธ ์นธ, ์ผ์ชฝ์์๋ถํฐ c๋ฒ์งธ ์นธ์ ์๋ฏธํ๋ค. r๊ณผ c๋ 1๋ถํฐ ์์ํ๋ค.
์ด ๋์์ ์ฌ๋ ์ฌ๋๋ค์ ์นํจ์ ๋งค์ฐ ์ข์ํ๋ค. ๋ฐ๋ผ์, ์ฌ๋๋ค์ "์นํจ ๊ฑฐ๋ฆฌ"๋ผ๋ ๋ง์ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ์นํจ ๊ฑฐ๋ฆฌ๋ ์ง๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ์นํจ์ง ์ฌ์ด์ ๊ฑฐ๋ฆฌ์ด๋ค. ์ฆ, ์นํจ ๊ฑฐ๋ฆฌ๋ ์ง์ ๊ธฐ์ค์ผ๋ก ์ ํด์ง๋ฉฐ, ๊ฐ๊ฐ์ ์ง์ ์นํจ ๊ฑฐ๋ฆฌ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋์์ ์นํจ ๊ฑฐ๋ฆฌ๋ ๋ชจ๋ ์ง์ ์นํจ ๊ฑฐ๋ฆฌ์ ํฉ์ด๋ค.
์์์ ๋ ์นธ (r1, c1)๊ณผ (r2, c2) ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ |r1-r2| + |c1-c2|๋ก ๊ตฌํ๋ค.
์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ์ง๋๋ฅผ ๊ฐ๋ ๋์๋ฅผ ์ดํด๋ณด์.
0์ ๋น ์นธ, 1์ ์ง, 2๋ ์นํจ์ง์ด๋ค.
(2, 1)์ ์๋ ์ง๊ณผ (1, 2)์ ์๋ ์นํจ์ง๊ณผ์ ๊ฑฐ๋ฆฌ๋ |2-1| + |1-2| = 2, (5, 5)์ ์๋ ์นํจ์ง๊ณผ์ ๊ฑฐ๋ฆฌ๋ |2-5| + |1-5| = 7์ด๋ค. ๋ฐ๋ผ์, (2, 1)์ ์๋ ์ง์ ์นํจ ๊ฑฐ๋ฆฌ๋ 2์ด๋ค.
(5, 4)์ ์๋ ์ง๊ณผ (1, 2)์ ์๋ ์นํจ์ง๊ณผ์ ๊ฑฐ๋ฆฌ๋ |5-1| + |4-2| = 6, (5, 5)์ ์๋ ์นํจ์ง๊ณผ์ ๊ฑฐ๋ฆฌ๋ |5-5| + |4-5| = 1์ด๋ค. ๋ฐ๋ผ์, (5, 4)์ ์๋ ์ง์ ์นํจ ๊ฑฐ๋ฆฌ๋ 1์ด๋ค.
์ด ๋์์ ์๋ ์นํจ์ง์ ๋ชจ๋ ๊ฐ์ ํ๋์ฐจ์ด์ฆ์ด๋ค. ํ๋ ์ฐจ์ด์ฆ ๋ณธ์ฌ์์๋ ์์ต์ ์ฆ๊ฐ์ํค๊ธฐ ์ํด ์ผ๋ถ ์นํจ์ง์ ํ์ ์ํค๋ ค๊ณ ํ๋ค. ์ค๋ ์ฐ๊ตฌ ๋์ ์ด ๋์์์ ๊ฐ์ฅ ์์ต์ ๋ง์ด ๋ผ ์ ์๋ ์นํจ์ง์ ๊ฐ์๋ ์ต๋ M๊ฐ๋ผ๋ ์ฌ์ค์ ์์๋ด์๋ค.
๋์์ ์๋ ์นํจ์ง ์ค์์ ์ต๋ M๊ฐ๋ฅผ ๊ณ ๋ฅด๊ณ , ๋๋จธ์ง ์นํจ์ง์ ๋ชจ๋ ํ์ ์์ผ์ผ ํ๋ค. ์ด๋ป๊ฒ ๊ณ ๋ฅด๋ฉด, ๋์์ ์นํจ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์๊ฒ ๋ ์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ์ถ๋ ฅ ์์
ํ์ด
๋ด๊ฐ ๊ณจ๋ ๋ฌธ์ ๋ฅผ ํ๋ค๋..! ์ด ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ๊ตฌํ์ ๋์ ์ค๋ฒ~๋ฎ์ ๊ณจ๋ ๋ฌธ์ ์์ฃผ๋ก ํ์ด๋ด์ผ ๋น ๋ฅด๊ฒ ์ค๋ ฅ์ด ๋๊ฒ ๊ตฌ๋ ์ถ์ ์๊ฐ์ด ๋ค์๋ค.
๋ฌธ์ ๋ฅผ ๊ผผ๊ผผํ ์ ์ฝ์ด์ ํค๋งธ๋ ๋ถ๋ถ์ด ์๋๋ฐ
1) ๊ฐ ์ง์ ์นํจ ๊ฑฐ๋ฆฌ = ์ง๊ณผ โญ๊ฐ์ฅ ๊ฐ๊น์ดโญ ์นํจ์ง์ ๊ฑฐ๋ฆฌ
2) ํ์ ์ํค์ง ์์ ์นํจ์ง์ ์ต๋ ๊ฐ์ M๊ฐ
1) ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ์ ํ์ ๋์น๊ณ ์์๋ค๋ ๊ฑธ ๋ฐ๋ก ํ์ ํ๋๋ฐ 2)๋ ์ดํดํ๋ ๋ฐ์ ์๊ฐ์ด ์กฐ๊ธ ๊ฑธ๋ ธ๋ค. '์ต๋ M๊ฐ'๋ผ๋ ํํ์ด ์์ด์ ์ฒ์์๋ ๋น์ฐํ 1๋ถํฐ M๊น์ง ๋ชจ๋ ํ์ธํ๋ ๊ฑธ๋ก ์๊ฐํ๋ค. ๊ทธ๋ฐ๋ฐ ์ฝ๋ ๊ตฌํ์ด๋ ์์ผ๋ก ์ฐ๋ฉด์ ๋ฌธ์ ๋ฅผ ๋ณด๋ค ๋ณด๋๊น ๋ญ๊ฐ ๋ฌธ์ ๊ฐ ๋๋ฌด ๋ณต์กํด์ง๋ ๊ฒ ๊ฐ์์ ๊ทธ ๋๋ถํฐ '์ ๋๋ก ์ดํดํ ๊ฒ ๋ง๋?' ์ถ์ ์๊ฐ์ด ๋ค์๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก๋ ๋์์ ์นํจ ๊ฑฐ๋ฆฌ๋ฅผ ์ต์ํํ๋ ค๋ฉด M๊ฐ๋ฅผ ๋จ๊ธฐ๋ ๊ฒ ๋ง๋ค. ์ข ๋ ๋ช ํํ๊ฒ ํํํ๋ ค๋ฉด M๊ฐ๋ฅผ ๋จ๊ฒจ์ผ๋ง ํ๋ค- ๊ฐ ๋๊ฒ ๋ค.
๊ทธ ์ด์ ๋? ๊ฐ ์ง๋ง๋ค ๊ฐ์ฅ ๊ฐ๊น์ด ์นํจ์ง์ด ๋ค๋ฅผ ๊ฑฐ๊ธฐ ๋๋ฌธ์ ๋ง์ด ๋จ๊ธฐ๋ ๊ฒ ์ข๋ค! (๋ก ์ดํดํ์)
# Gold 5
import sys
from itertools import combinations
N, M = map(int, sys.stdin.readline().split())
city = [list(sys.stdin.readline().split()) for _ in range(N)]
# ๋์ ๋ด ์ง๊ณผ ์นํจ์ง ์ขํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฆฌ์คํธ
home = []
chicken_distance = []
city_chicken_distance = 1000000
for row in range(len(city)):
for col in range(len(city)):
if city[row][col] == '1':
home.append([row, col])
elif city[row][col] == '2':
chicken_distance.append([row, col])
# ์ ์ฒด ์นํจ์ง์์ M๊ฐ์ ์กฐํฉ์ ๋ฝ์ ์ง๋ง๋ค ์นํจ ๊ฑฐ๋ฆฌ ๊ณ์ฐ
for chicken_idx in list(combinations(chicken_distance, M)):
temp = 0
for home_idx in home:
distance = 1000000
for i in range(M):
distance = min(abs(home_idx[0]-chicken_idx[i][0])+abs(home_idx[1]-chicken_idx[i][1]), distance)
temp += distance
city_chicken_distance = min(temp, city_chicken_distance)
print(city_chicken_distance)
'Problem Solving > BOJ & Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 14501๋ฒ: ํด์ฌ (1) | 2024.02.05 |
---|---|
[BOJ] 2960๋ฒ: RESETO (0) | 2024.01.18 |
[BOJ] 1789๋ฒ: ์๋ค์ ํฉ (1) | 2024.01.02 |
[BOJ] 1475๋ฒ: ๋ฐฉ ๋ฒํธ (1) | 2023.12.03 |
[BOJ] 1018๋ฒ: ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (0) | 2023.11.05 |