java quiz) 배열의 가로, 세로, 대각선의 각각의 합 구하기
자바/자바 퀴즈
2020. 11. 19. 02:21
안녕하세요! Zomder입니다.
오늘은 정방행렬 배열에 대한 가로, 세로 대각선의 각각의 합을 구하고 출력하는 문제를 가지고 왔습니다.
또한 배열의 값은 1~9까지가 아닌 임의의 난수를 생성해 배열에 넣을 것입니다. (단 , 배열은 정방 행렬)
제가 찾은 규칙은 아래와 같습니다.
규칙
- 왼쪽 대각선 : index X == index Y
- 오른 대각선 : index X + index Y == Array.length -1
- 가로 길이 : index Y는 고정 index X 변화
- 세로 길이 : index X는 고정 index Y 변화
코드
public static void main(String[] args) {
int[][] arr = new int[10][10];
//각각의 가로, 세로, 대각선의 합을 저장할 변수 목록
int[] horizonTotalArr = new int[arr.length];
int[] verticalTotalArr = new int[arr.length];
int rightDiagonal = 0;
int leftDiagonal = 0;
//난수를 2차원 배열에 저장
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr[i].length; j++){
arr[i][j] =(int)(Math.random()*100);
}
}
//생성된 2차원 배열 출력
System.out.println("생성된 2차원 배열");
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr[i].length; j++){
System.out.print(arr[i][j] +"\t");
}
System.out.println();
}
// 가로, 세로, 대각선의 합계 구하기
for(int i=0; i<arr.length; i++){
for(int j=0; j<arr.length; j++){
// 왼쪽 대각선
if(i == j){
leftDiagonal += arr[i][j];
}
if(i+j == arr.length-1){
rightDiagonal += arr[j][i];
}
horizonTotalArr[i] += arr[i][j]; //가로 길이 합
verticalTotalArr[i] += arr[j][i]; //세로 길이 합
}
}
// 결과값 출력
System.out.println("결과값 출력");
for(int i=0; i<horizonTotalArr.length; i++){
System.out.printf("\n %d번째 가로길이 합 : %d", i+1, horizonTotalArr[i]);
}
System.out.println("\n---------------------------------------------------");
for(int i=0; i<horizonTotalArr.length; i++){
System.out.printf("\n %d번째 세로길이 합 : %d", i+1, verticalTotalArr[i]);
}
System.out.println("\n---------------------------------------------------");
System.out.printf("\n 오른쪽 대각선 길이 합 : %d", rightDiagonal);
System.out.printf("\n 왼쪽 대각선 길이 합 : %d", leftDiagonal);
}
결과
'자바 > 자바 퀴즈' 카테고리의 다른 글
java quiz) 소수 구하기 (0) | 2020.11.25 |
---|---|
java quiz) for문을 이용한 별찍기 풀기 (0) | 2020.11.19 |
java quiz) 2차원 배열에 대각선 5에 배수 넣기! (0) | 2020.11.18 |