https://school.programmers.co.kr/learn/courses/30/lessons/154540
๋ด ํด๋ต
#include <string>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;
int ctoi(char c)
{
return int(c - '0');
}
vector<int> solution(vector<string> maps)
{
vector<int> answer;
vector<vector<bool>> visit(maps.size(), vector<bool>(maps[0].size(), false));
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
queue<pair<int, int>> q;
for (int y = 0; y < maps.size(); ++y)
{
for (int x = 0; x < maps[0].size(); ++x)
{
if (!visit[y][x] && 'X' != maps[y][x])
q.push({x,y});
int weight = 0;
while (!q.empty())
{
int x = q.front().first;
int y = q.front().second;
q.pop();
if (visit[y][x])
continue;
weight += ctoi(maps[y][x]);
visit[y][x] = true;
for (int i = 0; i < 4; ++i)
{
int nx = x + dx[i];
int ny = y + dy[i];
if (nx >= 0 && nx < maps[0].size() && ny >= 0 && ny < maps.size())
{
if (!visit[ny][nx] && 'X' != maps[ny][nx])
{
q.push({nx, ny});
}
}
}
}
if(weight != 0)
answer.push_back(weight);
}
}
if(answer.empty())
answer.push_back(-1);
else
sort(answer.begin(), answer.end());
return answer;
}
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ์ต๊ณ ์ ์งํฉ(C++) (0) | 2023.05.31 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] level.2 - ๊ทค ๊ณ ๋ฅด๊ธฐ(C++) (0) | 2023.05.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.2 - ๋ ๋ฐ๋จน๊ธฐ(C++) (0) | 2023.05.22 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ๊ฒฝ์ฃผ๋ก ๊ฑด์ค(C++) (1) | 2023.05.19 |
[ํ๋ก๊ทธ๋๋จธ์ค] level.3 - ์ ์ ์ ์ถ ์ค์ผ์ค๋ง (C++) (0) | 2023.05.18 |