728x90
반응형
1. 문제 1
문제)
1. 3행 3열짜리 문자열 배열을 선언
2. 출력
(0,0) (0,1) (0,2)
(1,0) (1,1) (1,2)
(2,0) (2,1) (2,2)
3. 4행 4열짜리 정수형 배열 선언
4. 출력
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
5. 4행 4열짜리 정수형 배열 선언해서 아래와 같이 출력
6. 출력
16 15 14 13
12 11 10 9
8 7 6 5
4 3 2 1
정답코드)
public class Example05 { public static void main(String[] args) { String str[][] = new String[3][3]; for(int i=0; i<str.length; i++) { for(int j=0; j<str[i].length; j++) { str[i][j] = "(" + i + "," + j + ")"; System.out.print(str[i][j]); } System.out.println(); } System.out.println(); int[][] arr = new int[4][4]; for(int i=0; i<arr.length; i++) { for(int j=0; j<arr[i].length; j++) { arr[i][j] = arr[i].length*i+j+1; // arr[i]의 길이 4에 i값을 곱하고 j 값을 더하면 0부터 증가합니다. // 따라서 1을 추가로 더해줍니다. System.out.print(arr[i][j] + " "); } System.out.println(); } System.out.println(); int[][] arr1 = new int[4][4]; for(int i=0; i<arr1.length; i++) { for(int j=0; j<arr1[i].length; j++) { arr1[i][j] = arr1[i].length*(arr1.length-i)-j; System.out.print(arr1[i][j] + " "); // arr1[i]의 길이 4에 (arr1의 길이-1) 값을 곱하고 j 값을 빼면 16부터 감소합니다. } System.out.println(); } } }
위의 출력 값과 같이 나타납니다.
2. 문제 2
문제)
1. 4행 4열 2차원 배열을 생성하여 0,0부터 2,2까지는 1~10까지의 임의의 정수 값에 저장하여 아래와 같이 처리
값 값 값 0행 값들의 합 값 값 값 1행 값들의 합 값 값 값 2행 값들의 합 0열 값들의 합 1열 값들의 합 2열 값들의 합 총합
2. 출력
9 3 7 19 3 6 9 18 6 10 10 26 18 19 26 63
정답 코드)
public class Example06 { public static void main(String[] args) { int[][] arr = new int[4][4]; for(int i=0; i<arr.length - 1; i++) { for(int j=0; j<arr[i].length - 1; j++) { arr[i][j] = (int)(Math.random()*10 + 1); arr[i][arr[i].length - 1] += arr[i][j]; arr[arr.length - 1][i] += arr[j][i]; arr[4 - 1][0] = arr[0][0] + arr[1][0] + arr[2][0]; arr[arr.length - 1][arr[i].length - 1] += arr[i][j]; } } 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<3; i++) { for(int j=0; j<3; j++) { arr[i][j] = (int)(Math.random()*10 + 1); } } // arr[0][0] ~ arr[0][2], arr[1][0] ~ arr[1][2], arr[2][0] ~ arr[2][2] // 총 9개의 방에 1~10까지 random 값을 넣어줍니다.
for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { arr[i][arr[i].length - 1] += arr[i][j]; // 1. 4번째 열에 해당 행의 합을 넣어야하기 때문에 열을 고정하고 i값만 변화시켜 변수를 지정합니다. // 2. arr[i][j] 값을 넣어주는 이유는 i가 1번 변할동안 j는 0~2까지 3번 변하기 때문입니다. // 3. 이때 행이 1번 고정되면 열의 값이 3번씩 바뀌는 것을 볼 수 있습니다. // 4. 아래의 코드를 보면 이해하실 수 있습니다. // arr[0][3] = arr[0][0] + arr[0][1] + arr[0][2]; // arr[1][3] = arr[1][0] + arr[1][1] + arr[1][2]; // arr[2][3] = arr[2][0] + arr[2][1] + arr[2][2]; } }
for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { arr[arr[i].length - 1][i] += arr[j][i]; // 1. 4번째 행에 해당 열의 합을 넣어야하기 때문에 행을 고정하고 i값만 변화시켜 변수를 지정합니다. // 2. arr[j][i] 값을 넣어주는 이유는 i가 1번 변할동안 j는 0~2까지 3번 변하기 때문입니다. // 3. 이때 열이 1번 고정되면 행의 값이 3번씩 바뀌는 것을 볼 수 있습니다. // 4. 아래의 코드를 보면 이해하실 수 있습니다. // arr[3][0] = arr[0][0] + arr[1][0] + arr[2][0]; // arr[3][1] = arr[0][1] + arr[1][1] + arr[2][1]; // arr[3][2] = arr[0][2] + arr[1][2] + arr[2][2]; } }
for(int i=0; i<3; i++) { for(int j=0; j<3; j++) { arr[arr.length - 1][arr[i].length - 1] += arr[i][j]; // 최종적으로 arr[3][3]에 arr[i][j]의 모든 값들을 합해줍니다. } }
다른 코드
public class Example07 { public static void main(String[] args) { int[][] arr = new int[4][4]; final int RowFinal = arr.length - 1; final int ColFinal = arr[0].length - 1; for(int i=0; i<arr.length; i++) { for(int j=0; j<arr[i].length; j++) { if(i != RowFinal && j != ColFinal) { arr[i][j] = (int)(Math.random()*10 + 1); arr[i][ColFinal] += arr[i][j]; arr[RowFinal][i] += arr[j][i]; arr[RowFinal][ColFinal] += arr[i][j]; } System.out.print(arr[i][j] + "\t"); } System.out.println(); } } }
if문을 이용해서 제한을 걸어주면 중복 for문을 한 번만 사용해서도 출력할 수 있습니다.
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
728x90
반응형
'BackEnd > Java' 카테고리의 다른 글
[java] 배열을 이용한 추가 연습문제3(array) (1) | 2023.01.10 |
---|---|
[java] 배열을 이용한 추가 연습문제2(array) (0) | 2023.01.09 |
[java] 문자열을 이용한 추가 연습문제(indexOf, substring, charAt ) (0) | 2023.01.09 |
[java] 이것이 자바다 ch05 문자열 타입 (0) | 2023.01.09 |
[java] 이것이 자바다 ch05 참조 타입 (0) | 2023.01.09 |