728x90
반응형
https://www.acmicpc.net/problem/1996
1. Logic
단순 파싱 그래프 구현 문제였다.
어렵진 않지만 c++로 파싱하려니 귀찮았다.
2. Code
#include<bits/stdc++.h>
using namespace std;
int n;
int mine[1001][1001];
int sum[1001][1001];
char ans[1001][1001];
int dx[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
int dy[8] = {0, -1, -1, -1, 0, 1, 1, 1};
int main() {
ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> n;
queue<pair<int, int>> q;
for(int i = 0; i < n; i++) {
string str;
cin >> str;
for(int j = 0; j < n; j++) {
if(str[j] == '.') {
mine[i][j] = 0;
}
else {
q.push({i, j});
mine[i][j] = (str[j]-'0');
}
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(mine[i][j] == 0) continue;
for(int k = 0; k < 8; k++) {
int ny = i + dy[k];
int nx = j + dx[k];
if(ny < 0 || nx < 0 || ny >= n || nx >= n) continue;
sum[ny][nx] += mine[i][j];
}
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
if(!q.empty() && q.front().first == i && q.front().second == j) {
ans[i][j] = '*';
q.pop();
}
else {
if(sum[i][j] >= 10) {
ans[i][j] = 'M';
}
else {
ans[i][j] = sum[i][j]+'0';
}
}
}
}
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
cout << ans[i][j];
}
cout << '\n';
}
}
알고리즘 Solve 후 제가 생각한 Logic을 기록하는 개인 공부 블로그입니다.
내용 중 최적화가 가능한 부분등은 언제든지 댓글로 틀린 부분 및 피드백 주시면 공부 및 반영하겠습니다🧐
728x90
반응형
'Algorithm > Beakjoon' 카테고리의 다른 글
[백준/Baekjoon] 16946 벽 부수고 이동하기 4 C++ :: BFS (1) | 2024.01.15 |
---|---|
[백준/Baekjoon] 2236 칩 만들기 C++ :: Greedy (1) | 2024.01.14 |
[백준/Baekjoon] 1937 욕심쟁이 판다 C++ :: DFS & Dynamic Programming (1) | 2024.01.10 |
[백준/Baekjoon] 1446 지름길 C++ :: Dynamic Programming (0) | 2024.01.07 |
[백준/Baekjoon] 2665 미로만들기 C++ :: BFS & Dijkstra (0) | 2024.01.06 |