반응형
https://www.acmicpc.net/problem/1996
구현 문제였습니다.
📕 풀이방법
📔 입력 및 초기화
정보가 들어올 한 변의 길이 n, 방향정보를 저장할 일차원 배열 dr과 dc, 정보가 주어질 이차원 배열 board, 정답을 출력할 이차원 배열 ans를 선언한 후 정보를 입력받습니다.
📔 풀이과정
조건에 따라 지뢰의 개수를 확인해 ans에 저장합니다. 이차원 for loop를 수행하면서 자신이 r행 c열이라고 가정했을 때 자신을 0행 0열 기준으로 잡고 dr, dc에 따라 다음과 같이 인접한 8칸의 좌표를 구해 ans[r][c]를 구합니다.
📔 정답출력
ans를 출력합니다.
📕 Code
#include <bits/stdc++.h>
using namespace std;
int n;
int dr[] = {-1, -1, -1, 0, 0, 1, 1, 1};
int dc[] = {-1, 0, 1, -1, 1, -1, 0, 1};
char board[1001][1001], ans[1001][1001];
int main(){
cin >> n;
for(int i = 0; i < n; i++) cin >> board[i];
for(int r = 0; r < n; r++){
for(int c = 0; c < n; c++){
if(board[r][c] != '.') { ans[r][c] = '*'; continue; }
int cnt = 0;
for(int i = 0; i < 8; i++){
int nr = r + dr[i];
int nc = c + dc[i];
if(0 > nr || nr >= n || 0 > nc || nc >= n) continue;
if(board[nr][nc] == '.') continue;
cnt += board[nr][nc] - '0';
}
if(cnt >= 10) ans[r][c] = 'M';
else ans[r][c] = cnt + '0';
}
}
for(int i = 0; i < n; i++) cout << ans[i] << '\n';
}
'Algorithm > Implementation' 카테고리의 다른 글
(C++) - 백준(BOJ) 17356 : 욱 제 (0) | 2022.05.07 |
---|---|
(C++) - 백준(BOJ) 6550 : 부분 문자열 (0) | 2022.05.05 |
(C) - 백준(BOJ) 25083번 : 새싹 (0) | 2022.04.29 |
(C++) - 백준(BOJ) 11536 : 줄 세우기 (1) | 2022.04.28 |
(C++) - 백준(BOJ) 24218 : Double Crypt 1 (0) | 2022.04.25 |