본문 바로가기
알고리즘/SWEA

[Java] SWEA 4301번 콩 많이 심기

by 컴공맨 2021. 4. 19.
 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


풀이

완전 탐색을 통해 상하좌우의 거리가 2인 위치에 콩이 없다면 콩을 놓게 하여 해결했습니다.

처음에는 dfs를 사용한 완전탐색을 하다가 런타임 에러가 나와서 고민을 했었던 문제입니다.


코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Solution {
	public static int N, M, answer;
	public static int[][] field;
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder("");
		StringTokenizer st = null;		
		
		int T = Integer.parseInt(br.readLine());
		
		for (int tc = 1; tc <= T; ++tc) {
			st = new StringTokenizer(br.readLine(), " ");
			
			N = Integer.parseInt(st.nextToken());
			M = Integer.parseInt(st.nextToken());
			
			field = new int[M][N];
			
			answer = 0;
			
			for (int i = 0; i < M; ++i) {
				for (int j = 0; j < N; ++j) {
					answer++;
					field[i][j] = 1;
					
					for (int k = 0; k < 4; ++k) {
						int ny = i + dy[k];
						int nx = j + dx[k];
						
						if (nx < 0 || ny < 0 || nx >= N || ny >= M) {
							continue;
						}
						
						if (field[ny][nx] == 1) {
							answer--;
							field[i][j] = 0;
							break;
						}
					}
				}
			}
			 
			 
			sb.append("#").append(tc).append(" ").append(answer).append("\n");
		}
		
		System.out.println(sb);
	}
	
	public static int[] dx = {0, 0, -2, 2};
	public static int[] dy = {-2, 2, 0 ,0};
}

 

pyo7410/Algorithm

1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.

github.com