NOTE/SWEA

13732. 정사각형 판정 - d3

m-inz 2022. 6. 12. 00:35
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
static int N;
static String[] arr;
	public static void main(String[] args) throws Exception{
      // TODO Auto-generated method stub

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
      
		int T;
		T=Integer.parseInt(br.readLine());
      
		StringBuilder sb = new StringBuilder();
		for(int test_case = 1; test_case <= T; test_case++)
		{ 
			N = Integer.parseInt(br.readLine()); 
			arr = new String[N];
    	  
			for(int i=0; i<N; i++) {
				arr[i] = br.readLine();
			}
			
			int starti=N-1;
			int startj= N-1; 
			int endi =0;
			int endj =0;
			
			for(int i=0; i<N; i++) {
				if(!arr[i].contains("#")) continue;
				for(int j=0; j<N; j++) {
					if(arr[i].charAt(j) == '#') {
						starti=Math.min(starti,i);
						startj=Math.min(startj,j);
						endi=Math.max(endi,i);
						endj=Math.max(endj,j);
					}
				}
			}
			boolean check = true;
            for(int i = starti; i <= endi; i++) {
                for(int j = startj; j <= endj; j++) {
                    if(arr[i].charAt(j)=='.') {
                    	check=false;
                    	break;
                    }
                }
            }
            String result = (check && endi-starti == endj-startj) ? "yes":"no";
			sb.append("#"+test_case+" "+result).append('\n');
		}
		System.out.print(sb);
	}
}

 

20개 test case 중에 16개만 맞아서

내가 생각하지 못한 예외가 뭘까 하구 ,, 하다가

시간이 너무 지체되서 😂🤣😂🤯😭

사람들 풀이를 보았다 ,,^^

 

내가 너무 복잡하게 생각했구나 느꼈고 

endi-starti 랑 endj-startj 같은지 검사하는 거에서 소름(?) 😱

이걸 왜 생각못했을까 했다. ....

가로 세로 길이 같은 지 검사해서 정사각형 판단할수도 있는데 ~~~ 

왜 난 생각 못했냐구요 ~