15686. ์นํจ ๋ฐฐ๋ฌ
by rlaehddnd0422
https://www.acmicpc.net/problem/15686
Point
- ๋ชจ๋ ์นํจ์ง(2)์ค์ n๊ฐ๋ฅผ ๊ณ ๋ฅธ ๋ค์, ๊ฐ๊ฐ์ ์ง๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๋ค.
- ๊ฐ๊ฐ ์ง์ ์นํจ ๊ฑฐ๋ฆฌ๋ ๊ฐ ์ง๊ณผ ์นํจ์ง๊ณผ์ (x์ขํ์ฐจ์ ์ ๋๊ฐ + y์ขํ์ฐจ์ ์ ๋๊ฐ)์ ์ต์๊ฐ.
- ๋์์ ์นํจ ๊ฑฐ๋ฆฌ๋ ๋ชจ๋ ์ง์ ์นํจ ๊ฑฐ๋ฆฌ์ ํฉ์ด๋ค.
- ๋์์ ์นํจ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ์ ์ถ๋ ฅ
Solution
#include <iostream>
#include <vector>
#include <algorithm>
#include <utility>
#define FASTio ios_base :: sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL)
#define endl '\n'
using namespace std;
int n,m;
int ans = -1;
vector<vector<int>> area(51,vector<int>(51,0));
vector<pair<int,int>> chicken;
vector<pair<int,int>> home;
int main()
{
FASTio;
cin >> n >> m;
// 1๋ฒ
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
cin >> area[i][j];
if(area[i][j]==2)
{
chicken.push_back(make_pair(i,j));
}
else if(area[i][j]==1)
{
home.push_back(make_pair(i,j));
}
}
}
// 2๋ฒ
vector<int> d(chicken.size());
for(int i=0;i<m;i++)
{
d[i] = 1;
}
for(int i=m;i<chicken.size();i++)
{
d[i] = 0;
}
sort(d.begin(),d.end());
// 3๋ฒ
do
{
int sum = 0;
for(auto &p : home)
{
vector<int> dists;
//
for(int i=0;i<chicken.size();i++)
{
if(d[i]==0) continue;
// ์ ํํ ์นํจ์ง์ ๋ํด์๋ง ๊ฑฐ๋ฆฌ๊ณ์ฐ
auto &s = chicken[i];
int d1 = abs(p.first - s.first);
int d2 = abs(p.second - s.second);
int dist = d1+d2;
// ๊ณ์ฐํ ๊ฑฐ๋ฆฌ dists์ ํธ์ฌ
dists.push_back(dist);
}
// ๊ณ์ฐํ ๊ฑฐ๋ฆฌ์ค ์ต์๊ฐ์ sum์ ๋ํด์ค -> ๋์์ ์นํจ ๊ฑฐ๋ฆฌ
sum += *min_element(dists.begin(),dists.end());
}
if(ans==-1 || sum<ans)
{ ans = sum;
}
} while(next_permutation(d.begin(),d.end()));
// 4๋ฒ
cout << ans;
return 0;
}
1๋ฒ. ์์ญ๋ฐฐ์ด์ ์ ๋ ฅ๋ฐ๊ณ ์์ญ๊ฐ์ด 1์ด๋ฉด home์ ์ขํ๊ฐ push, 2์ด๋ฉด chicken์ ์ขํ๊ฐ push
2๋ฒ. 1) ๋ชจ๋ ์นํจ์ง์ค์์ m๊ฐ๋ฅผ ๊ณ ๋ฅด๊ธฐ ์ํด d ๋ฐฐ์ด ์์ฑ
3๋ฒ. 1) 0~m-1์ 1์ค์ m~chicken.size()์ 0์ ์ค์ ํ๊ณ ์์๊ฐ 1์ธ ์ธ๋ฑ์ค์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ ธ์ค๋ฉด ๋จ
2) 1)์ ๊ดํด next_permutation ์คํ -> ์กฐํฉ์ด ๋๋ค
3) ๊ฑฐ๋ฆฌ ๊ณ์ฐ -> ๊ฐ๊ฐ ์ง์ ๋ํ ์นํจ๊ฑฐ๋ฆฌ์ ์ต์๊ฐ sum์ ๋ํด์ค -> sum์ ์ต์๊ฐ ans์ ์ ์ฅ
'๐ CS > Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5014. ์คํํธ๋งํฌ (0) | 2023.01.28 |
---|---|
3187. ์์น๊ธฐ ๊ฟ (0) | 2023.01.27 |
17089. ์ธ ์น๊ตฌ (0) | 2023.01.24 |
17088. ๋ฑ์ฐจ์์ด ๋ฐํ (0) | 2023.01.23 |
16968 / ์ฐจ๋ ๋ฒํธํ 1 (0) | 2023.01.20 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Study Repository
rlaehddnd0422