From aaeeb738ab56b40987859deff915c796a6413a5c Mon Sep 17 00:00:00 2001 From: yeoncheol-kim Date: Tue, 17 Jun 2025 08:46:28 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9C=20Study:=20=EB=AC=B4=EC=9D=B8?= =?UTF-8?q?=EB=8F=84=20=EC=97=AC=ED=96=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...0\353\217\204 \354\227\254\355\226\211.cc" | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 "\353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.cc" diff --git "a/\353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.cc" "b/\353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.cc" new file mode 100644 index 0000000..820227f --- /dev/null +++ "b/\353\254\264\354\235\270\353\217\204 \354\227\254\355\226\211.cc" @@ -0,0 +1,31 @@ +#include +#include +#include + +using namespace std; + +int dx[4] = {-1, 0, 0, 1}; +int dy[4] = {0, -1, 1, 0}; + +int dfs(int x, int y, vector &m){ + if(x < 0 || x >= m.size()) return 0; + if(y < 0 || y >= m[x].size()) return 0; + if(m[x][y] == 'X') return 0; + int sum = m[x][y] - '0'; + m[x][y] = 'X'; + for(int i = 0; i < 4; i++){ + sum += dfs(x + dx[i], y + dy[i], m); + } + return sum; +} + +vector solution(vector maps) { + vector answer; + for(int i = 0; i < maps.size(); i++) + for(int j = 0; j < maps[i].size(); j++) + if(maps[i][j] != 'X') + answer.push_back(dfs(i, j, maps)); + if(answer.empty()) return {-1}; + sort(answer.begin(), answer.end()); + return answer; +}