🌞Algorithm/🔥Baekjoon

[Baekjoon] 21221_Bold

뿌야._. 2025. 4. 24. 16:33
문제(출처: https://www.acmicpc.net/problem/21221)

< Bold >

 

문제 풀이 

 

# 표시를 기준으로 오른쪽, 아래, 오른쪽 아래 방향에 # 표시한다.

 

my solution (Java)

 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.OutputStreamWriter;
 import java.util.StringTokenizer;
 
 public class _21221_ { // Bold
 
 	public static void main(String[] args) throws IOException {
 		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
 		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 		StringTokenizer st = new StringTokenizer(bf.readLine());
 
 		int n = Integer.parseInt(st.nextToken());
 		int m = Integer.parseInt(st.nextToken());
 
 		char arr[][] = new char[n][m];
 
 		int dx[] = { 0, 1, 1 };
 		int dy[] = { 1, 0, 1 };
 
 		for (int i = 0; i < n; i++) {
 			String str = bf.readLine();
 			for (int j = 0; j < m; j++) {
 				if (str.charAt(j) == '.' && arr[i][j] == '#') {
 					continue;
 				}
 				arr[i][j] = str.charAt(j);
 				if (arr[i][j] == '#') {
 					for (int k = 0; k < 3; k++) {
 						int x = i + dx[k];
 						int y = j + dy[k];
 						if (x >= 0 && x < n && y >= 0 && y < m) {
 							arr[x][y] = '#';
 						}
 					}
 				}
 			}
 		}
 
 		for (int i = 0; i < n; i++) {
 			for (int j = 0; j < m; j++) {
 				bw.write(arr[i][j] + "");
 			}
 			bw.write("\n");
 		}
 		bw.flush();
 	}
 }
변수)
n, m : 행, 열
arr : 입력값
dx, dy : 오른쪽, 아래, 오른쪽 아래 방향

 

행, 열 크기를 입력받아 크기만큼 글자를 입력받는다. 입력받으며 다음 과정을 거친다.

 

1) 입력받은 문자가 '.'이고 배열에 이미 '#'으로 저장되어 있다면 PASS

2) 배열에 입력받은 문자 저장

3) 배열에 저장된 값이 '#'라면 오른쪽, 아래, 오른쪽 아래 방향에도 '#'으로 저장

 

배열 arr을 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 11544_D as in Daedalus  (1) 2025.04.28
[Baekjoon] 5840_Breed Proximity  (1) 2025.04.25
[Baekjoon] 16815_Star in Parentheses  (1) 2025.04.23
[Baekjoon] 6124_Good Grass  (1) 2025.04.22
[Baekjoon] 16061_You Are Fired!  (1) 2025.04.21