smooth waters run deep

1d-1c/BOJ

1652_누울 자리를 찾아라 (JAVA)

yeon_11 2020. 11. 19. 18:29
 

1652번: 누울 자리를 찾아라

첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.

www.acmicpc.net

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int n = Integer.parseInt(br.readLine());
        
        String st;
		char[][] bang = new char[n][n];
		for(int i=0; i<n; i++){
			st = br.readLine();
			bang[i] = st.toCharArray();
		}

		int garo=0; boolean flag = false;
		for(int i=0; i<n; i++){
			flag = false;
			for(int j=1; j<n; j++){
				if(bang[i][j]==bang[i][j-1] && bang[i][j]=='.'){
					flag = true;
				}
				if(bang[i][j] == 'X'){
					if(flag){
						garo++;
						flag = false;
					}
				}
				if(j==n-1){
					if(flag)
						garo++;
				}
			}
		}

		int sero=0;
		for(int i=0; i<n; i++){
			flag = false;
			for(int j=1; j<n; j++){
				if(bang[j][i]==bang[j-1][i] && bang[j][i]=='.'){
					flag = true;
				}
				if(bang[j][i] == 'X'){
					if(flag){
						sero++;
						flag = false;
					}
				}
				if(j==n-1){
					if(flag)
						sero++;
				}
			}
		}

		System.out.println(garo+" "+sero);
	}
}

 

가로/세로로 연속된 2칸 이상이 있으면 +1만 해준다고 문제를 잘못 이해했다.

내가 이해한건 : ..X.. 일때 1번 누울 수 있음

-> 문제에서는  ..X.. 이라면 2번 누울 수 있다.

 

 

입력N의 범위가 최대 100으로 작으므로, 가로/세로인 경우를 각각 이중for문을 통해 구현했다.

 

1. 2칸 이상 연속으로 .이 나온다면

   == if( bang[i][j]==bang[i][j-1] && bang[i][j]=='.' )로 표현했고,

   이 경우에 flag=true로 체크했다.

 

2. bang[i][j]=='X' 로, X를 만난다면

    flag를 체크한다. flag=true라면, 이전에 .이 2칸이상 연속해서 나왔다는 것이므로 +1

    X 이후에 .이 2칸 이상 연속으로 나온 경우를 또 체크해야되기 때문에 flag=false로 바꾸어준다.

 

3. .....와 같이 X를 만나지 못하고 j=0~n으로 for문이 끝나는 경우를 예외처리 해주었다.

  이때도 flag를 체크한다. flag=true인 경우 +1

 

 

'1d-1c > BOJ' 카테고리의 다른 글

9613_GCD 합 (JAVA)  (0) 2020.11.22
1934_최소공배수 (JAVA)  (0) 2020.11.22
1764_듣보잡 (JAVA)  (0) 2020.11.19
1759_암호 만들기 (JAVA)  (0) 2020.11.18
2309_일곱 난쟁이 (JAVA)  (0) 2020.11.18