[백준] 2140번 지뢰찾기 (자바 풀이)
- 알고리즘 문제 해결(PS)/[백준]
- 2022. 4. 5.
문제
https://www.acmicpc.net/problem/2140
풀이
이 문제는 구현 + 그리디 알고리즘 문제이다. 배열의 테두리에서 지뢰를 넣을 수 있는 곳을 모두 체크해야 한다.
이때 8방향을 조사해서 지뢰를 넣을 수 있는 곳은 '*'로 표시해두고, 넣을 수 없는 곳이라면 '-'로 표시해두었다.
또한 이미 '*'로 표시되어 있다면 넣을 수 있는 지뢰의 개수를 1씩 감소시켰다.
마지막에 '*' 개수를 세고, 주의해야 할 점은 '#'으로 남아 있는 부분도 count 해야 한다는 점이다. '#'으로 남아있는 부분은 지뢰를 무조건 넣을 수 있는 부분이기 때문에 이 부분도 정답에 포함시키면 된다.
코드
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Baekjoon_2140 { static int N; static char map[][]; static int dx[] = {-1,-1,-1,0,0,1,1,1}; static int dy[] = {-1,0,1,-1,1,-1,0,1}; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); map = new char[N][N]; for(int i=0; i<N; i++) { String str = br.readLine(); for(int j=0; j<N;j++) { map[i][j] = str.charAt(j); } } int cnt = 0; /* 지뢰 위치 탐색 */ for(int i=0; i<N; i++) { for(int j=0; j<N; j++) { if(Character.isDigit(map[i][j])) { int cur = map[i][j]-'0'; check(i,j, cur); } } } for(int i=0; i<N; i++) { for(int j=0; j<N; j++) { // 지뢰를 넣었거나 넣을 수 있다면 if(map[i][j] == '*' || map[i][j] == '#') { cnt++; } } } System.out.println(cnt); } /* 8방향 체크 */ public static void check(int x, int y, int cur) { for(int i=0; i<8; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if( nx<0 || ny<0 || nx >=N || ny >=N ) continue; if(map[nx][ny] == '#' && cur != 0) { // 지뢰를 넣을 수 있다면 cur--; map[nx][ny] = '*'; }else if(map[nx][ny] == '*' && cur != 0) { // 이미 지뢰가 있다면 cur--; }else if(map[nx][ny] == '#' && cur == 0) { // 지뢰를 넣을 수 없다면 map[nx][ny] = '-'; } } } } | cs |
반응형
'알고리즘 문제 해결(PS) > [백준]' 카테고리의 다른 글
[백준] 20056번 마법사 상어와 파이어볼 (자바 풀이) (0) | 2022.05.02 |
---|---|
[백준] 2210번 숫자판 점프 (자바 풀이) (0) | 2022.04.28 |
[백준] 17374번 비트베리 (자바 풀이) (0) | 2022.04.04 |
[백준] 11265번 끝나지 않는 파티 (자바 풀이) (0) | 2022.03.30 |
[백준] 4307번 개미 (자바 풀이) (0) | 2022.03.30 |