[구름톤 챌린지 2주 차 학습 일기] 9일차 미션 문제 9. 폭탄 구현하기 (2) (java)
Problem Solving/goorm

[구름톤 챌린지 2주 차 학습 일기] 9일차 미션 문제 9. 폭탄 구현하기 (2) (java)

728x90

https://level.goorm.io/exam/195691/%ED%8F%AD%ED%83%84-%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0-2/quiz/1

 

구름LEVEL

난이도별 다양한 문제를 해결함으로써 SW 역량을 향상시킬 수 있습니다.

level.goorm.io


728x90

 

내 생각

폭탄이 떨어진 자리와 상하좌우 좌표에 대해서 0, @, #인지에 따라 폭탄값이 1, 2 증가 또는 증가하지 않는지 조건만 잘 구현해 주면 된다.


import java.io.*;
import java.util.*;

class Main {
	
	static int N;
	static char[][] map;
	static int[][] resultMap;
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		
		// N, K 입력
		st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		int K = Integer.parseInt(st.nextToken());
		
		// 땅 상태 입력
		map = new char[N][N];
		for(int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			for(int j = 0; j < N; j++) {
				map[i][j] = st.nextToken().charAt(0);
			}
		}
		
		// 폭탄 떨어트리기
		int[] dx = {-1, 1, 0, 0};
		int[] dy = {0, 0, -1, 1};
		resultMap = new int[N][N];
		for(int i = 0; i < K; i++) {
			// x, y값 입력
			st = new StringTokenizer(br.readLine());
			int x = Integer.parseInt(st.nextToken()) - 1;
			int y = Integer.parseInt(st.nextToken()) - 1;
			
			// (x, y) 좌표와 상하좌우 폭탄값 반영
			changeMap(x, y);
			for(int j = 0; j < 4; j++) {
				int nx = x + dx[j];
				int ny = y + dy[j];
				changeMap(nx, ny);
			}
		}
			
		// 최대값 구하기
		int result = 0;
		for(int j = 0; j < N; j++) {
			for(int k = 0; k < N; k++) {
				result = result > resultMap[j][k] ? result : resultMap[j][k];
			}
		}

		System.out.println(result);
	}
	
	public static void changeMap(int x, int y) {
		// 범위 체크
		if(x < 0 || x >= N || y < 0 || y >= N) return;
		
		// 범위 안이라면 폭탄 값 반영
		if(map[x][y] == '0') { // 폭탄 값 1 증가
			resultMap[x][y]++;
		} else if(map[x][y] == '@') {
			resultMap[x][y] += 2;
		}
	}
}
728x90