반응형
1. 문제
예를 들어 위와 같은 표가 있을 때 4방의 수와 차를 구하고, 그 차를 절대값 취하는 방법이다.
result = |7-2|+|7-12|+|7-6|+|7-8|
2. 해결
public class 이차원배열_연습문제 {
public static void main(String[] args) {
//int[][] arr1= {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}};
//랜덤 수
int[][] arr1=new int[5][5];
for(int i=0;i<5;i++) {
for(int j=0;j<5;j++) {
arr1[i][j]=(int)(Math.random()*10);
}
}
//4방 위 아래 왼 오
int[][] dcr= {{-1,0},{1,0},{0,-1},{0,1}};
int N=arr1.length;
int M= arr1[0].length;
for(int i=0;i<N;i++) {
for(int j=0;j<M;j++) {
int sum=0;
//4방 조사
for(int k=0;k<dcr.length;k++) {
//경계체크
if(i+dcr[k][0]>=0 && i+dcr[k][0]<N && j+dcr[k][1]>=0 && j+dcr[k][1]<M) {
sum+=Math.abs(arr1[i][j]-arr1[i+dcr[k][0]][j+dcr[k][1]]);
}
}
System.out.println(sum);
}
}
}
}
상 : 행 -1 , 열 0
하 : 행 +1 , 열 0
좌 : 행 0 , 열 -1
우 : 행 0 , 열 +1
이라는 점을 고려해 dcr 배열을 만들어줬다.
dcr 배열은 for(int k=0;k<dcr.length;k++) 부분에서 특정한 인덱스인 arr1[i][j]의 4방을 조사할 때 쓰인다.
자바에서 수의 절대값은 Math.abs로 만들 수 있다.
배열의 랜던값을 배치하고 싶다면, Math.random을 해주면 된다.
기본형이 0~1사이 값이기 때문에 int형 변수에 넣을 때는 (int)(Math.random()*10)과 같이 형변환을 해주면 된다.
반응형
'알고리즘 > 이론' 카테고리의 다른 글
C strtok (1) | 2023.11.03 |
---|---|
SWEA 미로 1 문제를 통해 알아보는 DFS / BFS (0) | 2023.04.04 |
부분집합 / 조합 / 순열 / NEXT PERMUTATION 총정리 (0) | 2023.03.27 |
이진검색 & 정렬 정리 (0) | 2023.03.27 |
[JAVA] 카운팅 정렬 step3 완벽 이해 (0) | 2023.02.19 |