9205๋ฒ: ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ
์ก๋์ ์ฌ๋ ์๊ทผ์ด์ ์น๊ตฌ๋ค์ ์ก๋์์ ์ด๋ฆฌ๋ ํํํฌํธ ๋ฝ ํ์คํฐ๋ฒ์ ๊ฐ๋ ค๊ณ ํ๋ค. ์ฌํด๋ ๋งฅ์ฃผ๋ฅผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ๋ก ํ๋ค. ์ถ๋ฐ์ ์๊ทผ์ด๋ค ์ง์์ ํ๊ณ , ๋งฅ์ฃผ ํ ๋ฐ์ค๋ฅผ ๋ค๊ณ ์ถ๋ฐํ๋ค.
www.acmicpc.net
๋ฌธ์
์ก๋์ ์ฌ๋ ์๊ทผ์ด์ ์น๊ตฌ๋ค์ ์ก๋์์ ์ด๋ฆฌ๋ ํํํฌํธ ๋ฝ ํ์คํฐ๋ฒ์ ๊ฐ๋ ค๊ณ ํ๋ค. ์ฌํด๋ ๋งฅ์ฃผ๋ฅผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ๋ก ํ๋ค. ์ถ๋ฐ์ ์๊ทผ์ด๋ค ์ง์์ ํ๊ณ , ๋งฅ์ฃผ ํ ๋ฐ์ค๋ฅผ ๋ค๊ณ ์ถ๋ฐํ๋ค. ๋งฅ์ฃผ ํ ๋ฐ์ค์๋ ๋งฅ์ฃผ๊ฐ 20๊ฐ ๋ค์ด์๋ค. ๋ชฉ์ด ๋ง๋ฅด๋ฉด ์๋๊ธฐ ๋๋ฌธ์ 50๋ฏธํฐ์ ํ ๋ณ์ฉ ๋ง์๋ ค๊ณ ํ๋ค. ์ฆ, 50๋ฏธํฐ๋ฅผ ๊ฐ๋ ค๋ฉด ๊ทธ ์ง์ ์ ๋งฅ์ฃผ ํ ๋ณ์ ๋ง์ ์ผ ํ๋ค.
์๊ทผ์ด์ ์ง์์ ํ์คํฐ๋ฒ์ด ์ด๋ฆฌ๋ ๊ณณ์ ๋งค์ฐ ๋จผ ๊ฑฐ๋ฆฌ์ด๋ค. ๋ฐ๋ผ์, ๋งฅ์ฃผ๋ฅผ ๋ ๊ตฌ๋งคํด์ผ ํ ์๋ ์๋ค. ๋ฏธ๋ฆฌ ์ธํฐ๋ท์ผ๋ก ์กฐ์ฌ๋ฅผ ํด๋ณด๋ ๋คํํ๋ ๋งฅ์ฃผ๋ฅผ ํ๋ ํธ์์ ์ด ์๋ค. ํธ์์ ์ ๋ค๋ ธ์ ๋, ๋น ๋ณ์ ๋ฒ๋ฆฌ๊ณ ์ ๋งฅ์ฃผ ๋ณ์ ์ด ์ ์๋ค. ํ์ง๋ง, ๋ฐ์ค์ ๋ค์ด์๋ ๋งฅ์ฃผ๋ 20๋ณ์ ๋์ ์ ์๋ค. ํธ์์ ์ ๋์ ์งํ์๋ 50๋ฏธํฐ๋ฅผ ๊ฐ๊ธฐ ์ ์ ๋งฅ์ฃผ ํ ๋ณ์ ๋ง์ ์ผ ํ๋ค.
ํธ์์ , ์๊ทผ์ด๋ค ์ง, ํํํฌํธ ๋ฝ ํ์คํฐ๋ฒ์ ์ขํ๊ฐ ์ฃผ์ด์ง๋ค. ์๊ทผ์ด์ ์น๊ตฌ๋ค์ด ํ๋ณตํ๊ฒ ํ์คํฐ๋ฒ์ ๋์ฐฉํ ์ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ t๊ฐ ์ฃผ์ด์ง๋ค. (t ≤ 50)
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ ๋งฅ์ฃผ๋ฅผ ํ๋ ํธ์์ ์ ๊ฐ์ n์ด ์ฃผ์ด์ง๋ค. (0 ≤ n ≤ 100).
๋ค์ n+2๊ฐ ์ค์๋ ์๊ทผ์ด๋ค ์ง, ํธ์์ , ํํํฌํธ ๋ฝ ํ์คํฐ๋ฒ ์ขํ๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์ขํ๋ ๋ ์ ์ x์ y๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. (๋ ๊ฐ ๋ชจ๋ ๋ฏธํฐ, -32768 ≤ x, y ≤ 32767)
์ก๋๋ ์ง์ฌ๊ฐํ ๋ชจ์์ผ๋ก ์๊ธด ๋์์ด๋ค. ๋ ์ขํ ์ฌ์ด์ ๊ฑฐ๋ฆฌ๋ x ์ขํ์ ์ฐจ์ด + y ์ขํ์ ์ฐจ์ด ์ด๋ค. (๋งจํดํผ ๊ฑฐ๋ฆฌ)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค์ ๋ํด์ ์๊ทผ์ด์ ์น๊ตฌ๋ค์ด ํ๋ณตํ๊ฒ ํ์คํฐ๋ฒ์ ๊ฐ ์ ์์ผ๋ฉด "happy", ์ค๊ฐ์ ๋งฅ์ฃผ๊ฐ ๋ฐ๋ฅ๋์ ๋ ์ด๋ํ ์ ์์ผ๋ฉด "sad"๋ฅผ ์ถ๋ ฅํ๋ค.

ํ์ด๊ณผ์
๋ฌธ์ ์์๋ ๋งฅ์ฃผ๊ฐ 20๋ณ์ด ์๊ณ 1๋ณ๋น 50m๋ฅผ ๊ฐ ์ ์๋ค๊ณ ์ค๋ช ์ ํ๊ณ ์์ง๋ง, ์๊ทผ์ด๊ฐ ํธ์์ ์ ๊ฐ๋ฉด ๋ชจ๋ ๋งฅ์ฃผ์ ๊ฐ์๊ฐ ๋ค ์ฑ์์ง๋ฏ๋ก
20 * 50 = 1000m๋ก ์๊ทผ์ด์ ์์น๋ฅผ ๊ธฐ์ค์ผ๋ก 1000m๋ด์ ๊ฐ ์ ์๋ ๊ณณ์ด ์๋ค๋ฉด ์๊ทผ์ด๋ ์ด๋์ ํ ์ ์๋ค.
์์ ๊ฐ์ ํ์์ผ๋ก ์๊ทผ์ด๊ฐ 1000m๋ด์ ๋ฝ ํ์คํฐ๋ฒ ๊ฐ ์ ์๋ ์์น๊ฐ ๊ฐ๋ฅํ๊ฐ ๋ผ๋๊ฒ ๋ฌธ์ ์ ์กฐ๊ฑด์ด์๋ค.
์ด ๋ฌธ์ ๋ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ํ์์ ํด๋ณด๊ณ ๋์ฐฉํ ์ ์๋ค๋ฉด "happy" ์ถ๋ ฅ
๋์ฐฉํ ์ ์๋ค๋ฉด "sad" ์ถ๋ ฅ
์ผ๋ก ์ ์ฒด์ ์ธ ๋ก์ง์ ๊ตฌ์ํ์๋ค.
- ์๊ทผ์ด์ ํ์ฌ ์์น๊ธฐ์ค์ผ๋ก 1000m ๋ด์ ๋ฝํ์คํฐ๋ฒ์ด ์์นํด์๋ค๋ฉด "happy" ์ถ๋ ฅ ํ ์ข ๋ฃ
- 1000m ๋ด์ ์ด๋ํ ์ ์๋ ํธ์์ ์ด ์๋ค๋ฉด queue์ ์ ์ฅ ( ์ด๋ฏธ ๋ฐฉ๋ฌธํ ํธ์์ ์ด๋ผ๋ฉด ๊ฑด๋๋ฐ๊ธฐ )
- queue.front๋ฅผ ๋ฝ์์ ์๊ทผ์ด์ ์์น๋ฅผ ํธ์์ ์ ์์น๋ก ๊ฐฑ์
์์ ์ ์ ๋ก์ง์ด ๋ฌดํ ๋ฐ๋ณต์ด์๋ค.
1000m๋ด๋ก ์ด๋ํ ์ ์๋์ง ์๋์ง ํ์ธํ๋ ๋ฐฉ๋ฒ์
pos = std::abs(A.Y - B.Y) + std::abs(A.X - B.Y)
temp = std::abs(C.Y - D.Y) + std::abs(C.X - D.Y)
์์ ๊ฐ์ ํ์์ผ๋ก pos์ temp์ ์ฐจ์ด๊ฐ ์ ๋๊ฐ 1000์์ ์๋ค๋ฉด ์ด๋์ ํ ์ ์์๋ค.
code
#include <iostream>
#include <vector>
#include <queue>
int beer = 1000;
std::vector <std::pair<int, int> > shop;
bool check[101];
void bfs(std::pair<int, int> home, std::pair<int, int> rage)
{
int temp;
bool output = false;
std::queue <std::pair<int, int> > que;
std::pair <int, int> pos;
que.push(std::make_pair(home.first, home.second));
while (!que.empty())
{
pos = que.front();
que.pop();
temp = std::abs(pos.first - rage.first);
temp += std::abs(pos.second - rage.second);
if (temp <= beer) {
output = true;
break;
}
for (int i = 0; i < shop.size(); i++) {
temp = std::abs(pos.first - shop[i].first);
temp += std::abs(pos.second - shop[i].second);
if (temp <= beer && !check[i]) {
que.push(std::make_pair(shop[i].first, shop[i].second));
check[i] = true;
}
}
}
if (output == true) std::cout << "happy" << "\n";
else std::cout << "sad" << "\n";
}
int main(void)
{
int t, n;
std::pair <int, int> home, rage, temp;
std::cin >> t;
for (int i = 0; i < t; i++) {
std::cin >> n;
std::cin >> home.first >> home.second;
for (int j = 0; j < n; j++) {
std::cin >> temp.first >> temp.second;
shop.push_back(temp);
}
std::cin >> rage.first >> rage.second;
bfs(home, rage);
std::fill_n(check, 100, false);
shop.clear();
}
}
ํ๊ธฐ
๋ฐ๋ก๋ฅผ ๊ณ ๋ คํ์ง๋ชปํ๊ณ bfs๊ฐ ์๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ๊ทผํ์ด์ ์ค๋์๊ฐ์ด ๊ฑธ๋ ธ๋ ๊ฑฐ ๊ฐ๋ค.
๋ฌธ์ ๋ฅผ ์ ๊ทผํ ๋ ๋ ๊น๊ฒ ์๊ฐ์ ํด๋ณด๊ณ ํ์คํ๊ฒ ์ ๊ทผ์ ํด๋ด์ผํ ๊ฑฐ ๊ฐ๋ค.
'Algorithm > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 17219๋ฒ - ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (C++) (0) | 2023.09.08 |
---|---|
[๋ฐฑ์ค] 16928๋ฒ - ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (C++) (1) | 2023.09.07 |
[๋ฐฑ์ค] 21736๋ฒ - ํ๋ด๊ธฐ๋ ์น๊ตฌ๊ฐ ํ์ํด (C++) (0) | 2023.09.05 |
[๋ฐฑ์ค] 15904๋ฒ - UCPC๋ ๋ฌด์์ ์ฝ์์ผ๊น? (C++) (0) | 2023.09.05 |
[๋ฐฑ์ค] 1107๋ฒ - ๋ฆฌ๋ชจ์ปจ (C++) (0) | 2023.09.02 |