SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
문제 접근법 : 숫자가 사각형으식으로만 채워져있는 문제이기 때문에 어떻게 풀어도
일반탐색 or dfs or bfs 어떤 탐색을 해도 상관없습니다.
여러가지 탐색을 이용해서 사각형좌상단좌표와 우하단 좌표만 찾아서 해당 크기를 저장하시는형대로 짜시면됩니다.
저같은경우는 dfs를 이용해서 풀었고
visit배열 없이 그냥 숫자를 제거하는방식으로 탐색했습니다.
소스코드 :
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Solution {
public static int dy[]=new int[]{-1,0,1,0};
public static int dx[]=new int[]{0,1,0,-1};
public static int n;
public static int board[][];
public static int minx,miny,maxx,maxy;
public static void main(String[] args) throws FileNotFoundException {
//System.setIn(new FileInputStream("input.txt"));
Scanner sc= new Scanner(System.in);
int Test = sc.nextInt();
for(int test=1;test<=Test;test++){
n = sc.nextInt();
board= new int[n][n];
for(int i =0;i<n;i++){
for(int j=0;j<n;j++){
board[i][j]=sc.nextInt();
}
}
List<int[]> res = new ArrayList<>();
for(int i =0;i<n;i++){
for(int j=0;j<n;j++){
if(board[i][j]>0){
minx=miny = (int)1e9;
maxx=maxy = 0;
dfs(i,j);
res.add(new int[]{maxy-miny+1,maxx-minx+1});
}
}
}
res.sort((a,b)->{
if (a[0]*a[1]==b[0]*b[1]){
return a[0]-b[0];
}
return a[0]*a[1]-b[0]*b[1];
});
System.out.print("#"+test+" "+res.size()+" ");
for(int r[] :res){
System.out.print(r[0]+" "+r[1]+" ");
}
System.out.println();
}
}
public static boolean isrange(int y,int x){
return 0<=y&&y<n&&0<=x&&x<n;
}
public static void dfs(int y,int x){
if(!isrange(y,x))
return;
if(board[y][x]==0)return;
board[y][x]=0;
maxx=Math.max(maxx,x);
maxy=Math.max(maxy,y);
minx=Math.min(minx,x);
miny=Math.min(miny,y);
for(int i =0;i<4;i++){
int ny=y+dy[i];
int nx=x+dx[i];
dfs(ny,nx);
}
}
}
궁금한점 혹은 모르는점 어떤질문이든 댓글은 언제나 환영입니다.
'SWEA' 카테고리의 다른 글
[SWEA] 1264. [S/W 문제해결 응용] 8일차 - 이미지 유사도 검사(python) (0) | 2025.01.10 |
---|---|
[SWEA]1260. [S/W 문제해결 응용] 7일차 - 화학물질2 [Java] (0) | 2024.12.10 |
[SWEA]1251. [S/W 문제해결 응용] 4일차 - 하나로 (c++) (1) | 2024.12.09 |
[SWEA] 1248. [S/W 문제해결 응용] 3일차 - 공통조상 (C++) (0) | 2024.12.09 |
[SWEA] 1252. 단순도금비용 (python) (0) | 2024.12.09 |