21736λ²: νλ΄κΈ°λ μΉκ΅¬κ° νμν΄
2020λ μ μ νν νλ΄κΈ° λμ°μ΄κ° μλ€. λμ°μ΄λ λΉλλ©΄ μμ λλ¬Έμ νκ΅μ κ°μ§ λͺ»ν΄ νκ΅μ μλ μΉκ΅¬κ° μμλ€. λλμ΄ λλ©΄ μμ μ νκ² λ λμ°μ΄λ μ΄μ μΊ νΌμ€ λ΄μ μ¬λλ€κ³Ό μΉν΄μ§κ³
www.acmicpc.net
λ¬Έμ
μ λ ₯
μΆλ ₯
첫째 μ€μ λμ°μ΄κ° λ§λ μ μλ μ¬λμ μλ₯Ό μΆλ ₯νλ€. λ¨, μ무λ λ§λμ§ λͺ»ν κ²½μ° TTλ₯Ό μΆλ ₯νλ€.

νμ΄κ³Όμ
"IλΌλ κ°μ΄ μνμ’μ°λ‘λ§ μμ§μΌ μ μμλ λ§λ μ μλ Pμ κ°μλ λͺκ°μΈκ°?"λΌλ λ¬Έμ μκ³ ,
ν΄λΉλ¬Έμ λ λ§ κ·Έλλ‘ μνμ’μ°λ₯Ό λͺ¨λ νμνμ¬ Pμ κ°μλ₯Ό ꡬνλ€μ μΆλ ₯νλ©΄ λκΈ°λλ¬Έμ BFS μκ³ λ¦¬μ¦μ νμ¬ λͺ¨λ ꡬκ°μ λ€ λλ λ°©μμΌλ‘ μ½λλ₯Ό ꡬμνμμ΅λλ€.
code
#include <iostream>
#include <queue>
char campus[601][601];
char checkMap[601][601];
int bfs(int n, int m, int placeY, int placeX)
{
int count = 0;
std::queue <std::pair<int, int> > que;
std::pair <int, int> Doyeon;
que.push(std::make_pair(placeY, placeX));
while (!que.empty())
{
Doyeon = que.front();
que.pop();
if (!checkMap[Doyeon.first][Doyeon.second]) {
// std::cout << campus[Doyeon.first][Doyeon.second] << "\n";
if (campus[Doyeon.first][Doyeon.second] == 'P')
count++;
if (Doyeon.first + 1 < n && !checkMap[Doyeon.first + 1][Doyeon.second]) {
if (campus[Doyeon.first + 1][Doyeon.second] != 'X')
que.push(std::make_pair(Doyeon.first + 1, Doyeon.second));
}
if (0 <= Doyeon.first - 1 && !checkMap[Doyeon.first - 1][Doyeon.second]) {
if (campus[Doyeon.first - 1][Doyeon.second] != 'X')
que.push(std::make_pair(Doyeon.first - 1, Doyeon.second));
}
if (Doyeon.second + 1 < m && !checkMap[Doyeon.first][Doyeon.second + 1]) {
if (campus[Doyeon.first][Doyeon.second + 1] != 'X')
que.push(std::make_pair(Doyeon.first, Doyeon.second + 1));
}
if (0 <= Doyeon.second - 1 && !checkMap[Doyeon.first][Doyeon.second - 1]) {
if (campus[Doyeon.first][Doyeon.second - 1] != 'X')
que.push(std::make_pair(Doyeon.first, Doyeon.second - 1));
}
checkMap[Doyeon.first][Doyeon.second] = 1;
}
}
return count;
}
int main(void)
{
int n, m;
int placeX, placeY, count;
std::cin >> n >> m;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
std::cin >> campus[i][j];
if (campus[i][j] == 'I') {
placeY = i;
placeX = j;
}
}
}
count = bfs(n, m, placeY, placeX);
if (count == 0) std::cout << "TT" << "\n";
else std::cout << count << "\n";
return (0);
}
νκΈ°
μ΅μνλ μ νμ λ¬Έμ κ° ν¬κ² μ΄λ ΅μ§μκ² μ κ·Όν μ μμλ κ±° κ°λ€.
νμνλ κ³Όμ μμ λκ°μ μ½λκ° 4λ² λ°λ³΅μ΄ λμ΄ νμνλ λ°©λ²μ λ°°μ΄λ‘ λ΄μΌλ©΄ ν¨μ¬ κΉλνκ² μ½λλ₯Ό ꡬμν μ μμ κ±° κ°λ€.
'Algorithm > λ¬Έμ νμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 16928λ² - λ±κ³Ό μ¬λ€λ¦¬ κ²μ (C++) (1) | 2023.09.07 |
---|---|
[λ°±μ€] 9205λ² - λ§₯μ£Ό λ§μλ©΄μ κ±Έμ΄κ°κΈ° (C++) (0) | 2023.09.06 |
[λ°±μ€] 15904λ² - UCPCλ 무μμ μ½μμΌκΉ? (C++) (0) | 2023.09.05 |
[λ°±μ€] 1107λ² - 리λͺ¨μ»¨ (C++) (0) | 2023.09.02 |
[λ°±μ€] 24039λ² - 2021μ 무μμ΄ νΉλ³ν κΉ? (C++) (0) | 2023.09.01 |