Algorithm/BOJ(Baekjoon Online Judge)

[백준 - 2897번] 몬스터 트럭 - Java //Wello Horld//

koucop 2019. 8. 14. 15:31

이번에는 BOJ의 2897번 문제 "몬스터 트럭" 을 풀어보도록 하자

해빈이가 갖고 있는 몬스터 트럭을 이용해서 주차를 하는데, 총 (R , C) 만큼의 공간에 (2 , 2)인 몬스터 트럭을 주차하고 싶어한다. 이때, (R , C)만큼의 공간에는 빌딩('#')도 있고, 주차된 차('X'), 빈 주차 공간('.') 3가지의 경우가 존재하고, 빌딩은 부수고 주차할 수 없지만, 주차된 차는 부수고 주차할 수 있다고 할 때, 몇대를 부수고 주차를 할 수 있는지 각 경우에 따라서 구해주면 되는 문제이다.

입력으로 R, C가 주어지고, 그다음 (R X C) 만큼 3가지의 경우 '#', 'X', '.' 가 주어진다. 출력으로, 총 다섯 줄에 0대를 부수고 주차할 수 있는 공간의 개수, 1대를 부수고 주차할 수 있는 공간의 개수, ... , 4대를 부수고 주차할 수 있는 공간의 개수를 출력 해주면 되는 문제이다.

성공한 코드는 아래와 같다

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

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        char[][] map = new char[50][50];
        StringTokenizer st = new StringTokenizer(br.readLine());
        int R = Integer.parseInt(st.nextToken());
        int C = Integer.parseInt(st.nextToken());
        for(int i = 0; i < R; i++){
            String input = br.readLine();
            for(int j = 0; j < C; j++){
                map[i][j] = input.charAt(j);
            }
        }
        int zero = 0, one = 0, two = 0, three = 0, four = 0;
        for(int i = 0; i < R - 1; i++){
            for(int j = 0; j < C - 1; j++){
                int cnt = 0;
                base:
                for(int k = i; k < i + 2; k++){
                    for(int l = j; l < j + 2; l++){
                        if(map[k][l] == '#') break base;
                        if(map[k][l] == 'X') cnt++;
                        if(k == i + 1 && l == j + 1){
                            if(cnt == 0) zero++;
                            else if(cnt == 1) one++;
                            else if(cnt == 2) two++;
                            else if(cnt == 3) three++;
                            else if(cnt == 4) four++;
                        }
                    }
                }
            }
        }
        bw.write(zero + "\n");
        bw.write(one + "\n");
        bw.write(two + "\n");
        bw.write(three + "\n");
        bw.write(four + "\n");

        bw.flush();
        br.close();
        bw.close();
    }
}

 

문제 : https://www.acmicpc.net/problem/2897

 

2897번: 몬스터 트럭

문제 해빈이가 드디어 면허를 땄다! 해빈이의 부모님은 기뻐하며 해빈이에게 첫 차로 몬스터 트럭을 사 주셨다. 해빈이는 자신의 첫 차가 강남 대로의 모든 차를 부수면서 러시 아워조차 자신을 막을 수 없다는 것을 깨닫고 기뻐했지만, 차가 다른 차들의 네 배 크기이기 때문에 주차하는 데 애를 먹고 있었다. 그걸 본 준규는 마침 강남에서 공영 주차장 아르바이트를 하고 있기 때문에 정기적으로 해빈이에게 강남 주차장 지도를 보내주기로 했다. 지도는 R행 C열의 표로

www.acmicpc.net