일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- php 프로그래밍 입문 연습문제
- SWEA
- 페이코 추천인
- Flutter
- 배열
- 페이코 초대코드
- 플러터
- php 프로그래밍
- C언어
- 플러터 개발환경 설정
- 자바
- php 프로그래밍 입문 솔루션
- 자바 스프링
- 페이코 친구코드
- JAVA SPRING
- 백준
- C
- 페이코 추천인코드
- php
- php 프로그래밍 입문 문제풀이
- 스프링
- spring
- 최단 경로
- 파이썬
- programmers
- Java
- php 프로그래밍 입문 3판
- php 프로그래밍 입문 예제
- 한정 분기
- php 프로그래밍 입문
Archives
- Today
- Total
01-03 07:25
ImJay
[BOJ/Java] 16918. 봄버맨 본문
반응형
[BOJ/Java] 16918. 봄버맨
풀이
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 초기 입력값 받기
String input = br.readLine();
StringTokenizer st = new StringTokenizer(input);
int r = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
// 격자판의 초기 상태 및 현재 상태를 저장할 배열 선언
char[][] graph = new char[r][c];
char[][] original = new char[r][c];
// 초기 상태 입력
for (int x = 0; x < r; x++) {
String row = br.readLine();
for (int y = 0; y < c; y++) {
graph[x][y] = row.charAt(y);
original[x][y] = row.charAt(y);
}
}
// 초 단위로 반복
for (int i = 2; i <= n; i++) {
// 폭탄 설치 및 폭탄이 터지는 시점에 대한 조건문
int[][] direction = {{0, 0}, {1, 0}, {-1, 0}, {0, 1}, {0, -1}};
if (i % 4 == 2 || i % 4 == 0) {
// 2초 또는 4초일 때, 모든 칸에 폭탄 설치
for (int x = 0; x < r; x++) {
for (int y = 0; y < c; y++) {
graph[x][y] = 'O';
}
}
} else {
// 폭탄 터지는 시점일 때, 폭탄 터지는 로직 수행
for (int x = 0; x < r; x++) {
for (int y = 0; y < c; y++) {
if (original[x][y] == 'O') {
for (int d = 0; d < 5; d++) {
int newX = x + direction[d][0];
int newY = y + direction[d][1];
// 주변 5방향으로 폭탄이 터지도록 설정
if (0 <= newX && newX < r && 0 <= newY && newY < c) {
graph[newX][newY] = '.';
}
}
}
}
}
// 현재 상태 갱신
for (int x = 0; x < r; x++) {
for (int y = 0; y < c; y++) {
original[x][y] = graph[x][y];
}
}
}
}
// 최종 결과 출력
for (int x = 0; x < r; x++) {
for (int y = 0; y < c; y++) {
sb.append(graph[x][y]);
}
sb.append("\n");
}
System.out.print(sb);
}
}
반응형
'알고리즘 > 구현' 카테고리의 다른 글
[BOJ/Java] 17144. 미세먼지 안녕! (0) | 2024.01.29 |
---|---|
[BOJ/Java] 21610. 마법사 상어와 비바라기 (0) | 2024.01.29 |
[BOJ/Java] 3985. 롤 케이크 (0) | 2024.01.29 |
[BOJ/Java] 2999. 비밀 이메일 (2) | 2024.01.24 |
[BOJ/Java] 13300. 방 배정 (1) | 2024.01.23 |
Comments