김찬진의 개발 블로그
[23/04/17] B1051 본문
package baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 숫자 정사각형
public class B1051 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken()); // 구분자 제외하고 토큰만 인식
int M = Integer.parseInt(st.nextToken()); // 구분자 제외하고 토큰만 인식
// 2차원 배열 만들기
int[][] intArr = new int[N][M];
for(int i=0; i<N; i++) { // 행
String str = br.readLine();
for (int j = 0; j < M; j++) { // 열
intArr[i][j] = str.charAt(j) - 48; // 문자 타입 숫자를 정수 타입 숫자로 변환하고 intArr에 대입
}
}
// 정사각형 최대 변 길이 구하기
int len = Math.min(N, M);
// 가장 큰 정사각형 구하기
while(len > 1) {
for(int i=0; i<=N-len; i++) {
for(int j=0; j<=M-len; j++) {
int num = intArr[i][j];
// 정사각형을 찾는다면
if(num==intArr[i][j+len-1]
&& num==intArr[i+len-1][j]
&& num==intArr[i+len-1][j+len-1]) {
System.out.println(len*len);
return;
}
// 정사각형을 찾지 못한다면 다음 열로 이동
}
}
len--;
}
// 모든 행과 열을 뒤져봐도 정사각형을 찾기 못한다면 1 출력
System.out.println(len*len);
}
}
문제를 쪼개자. 한번에 다 하려고 하지말자. 반복문에서 하나 해결하고 반복문 나와서 다시 접근하자
if조건문에서 조건을 여러개 쓸 수 있다.
만약 조건에 하나도 일치하지 않는다면 어떻게 할지까지 생각하자. 문제 마무리를 잘 하자
'1일1알고 > Java Algorithm' 카테고리의 다른 글
[23/04/17] B18111 (2) | 2023.04.17 |
---|---|
[23/04/17] B1254 (1) | 2023.04.17 |
[23/04/17] B2231 (0) | 2023.04.17 |
[23/04/17] B1018 (0) | 2023.04.17 |
[23/04/17] B11478 (0) | 2023.04.17 |
Comments