📝문제 예제
👉 행과 열의 크기를 입력 받아
👉 int형 2차원 배열을 선언 및 할당하고
👉 2차원 배열의 각 인덱스에 1부터 순서대로 1씩 증가하는 수를 초기화하고 출력
예상 결과 화면)
행 크기 : 3
열 크기 : 2
1 2
3 4
5 6
Scanner sc = new Scanner(System.in); System.out.print("행 크기 : "); int rowSize = sc.nextInt(); System.out.print("행 크기 : "); int colSize = sc.nextInt(); //입력 받은 값 만큼의 크기를 가진 2차원 배열 선언 및 할당 int[][] arr = new int[rowSize][colSize]; int num = 1; //배열 요소에 대입될 값이 들어갈 변수 선언 및 초기화 for(int row = 0; row<arr.length; row++) { //행 반복 //바깥 for문은 대체로 행 for(int col = 0 ;col < arr[row].length ; col++) {//열 반복 //arr[row].length 바깥 반복문에서 그 해당 행의 길이 arr[row][col] = num++; //대입 후 num1 증가 //num++; 원래는 한 줄을 추가해야하지만 같이써서 코드 길이를 줄인다 System.out.print(arr[row][col]+ " "); //반복문이 끝날때마다 인덱스의 값+ 한칸 띄어쓰기해서 출력 } System.out.println(); //행 구분을 위한 줄바꿈 }
풀이
1. 입력 받은 값 만큼의 크기를 가진 2차원 배열 선언 및 할당
2. num : 배열 요소에 대입될 값이 들어갈 변수 선언 및 초기화
3. 바깥 for문 : //행 반복
4. 안쪽 for문: //열 반복 //arr[row].length 바깥 반복문에서 그 해당 행의 길이
5. arr[row][col] = num++; //대입 후 num1 증가
6. 반복문이 끝날때마다 인덱스의 값+ 한칸 띄어쓰기해서 출력
📝2차원 배열 문제 2
👉 3행 3열짜리 int 2차원 배열을 선언 및 초기화
👉 각 행의 합, 열의 합 출력
int[][] arr = { {1,2,3}, {4,5,6}, {7,8,9} }; // 행의 합 출력 for(int row = 0; row < arr.length; row++) {//행 반복 //행이 바뀌는 시점에 합계를 다시 계산할 수 있도록 sum을 // sum을 행 반복이 시작되는 부분에 작성 int sum = 0;// 행 합계 저장용 변수 // for문 안에 선언하는 이유는 한 줄마다 따로 계산해야 하니깐 한 행마다 만들어줘야하기 때문에! for(int col =0; col <arr[row].length; col++) { //열 반복 sum += arr[row][col]; //한 행의 값 누적 } //열이 3바퀴를 돌고 끝나는 시점에 출력 System.out.println(row + "번째 행 합 : " + sum); } //열의 합 구하기 // 기존과 다르게 열 부터 접근하는 경우 // arr[row].length를 이용하여 열의 개수를 구해오는 것이 불가능 // -> 대안으로 0부터 시작하는 변수를 별도로 선언하여 // 행을 간접적으로 지정하게한다. int temp =0; // 새로운 temp변수 선언 후 반복문이 돌아갈때 각 행의 값을 누적해서 0,1,2로 증가시킨다. for(int col = 0; col<arr[temp].length; col++) { //열 반복 //row를 쓸 수 없는 이유: 현재 for문에는 row가 없다. //정사각형의 배열은 0,1,2든 어떤 행을 넣어도 열의 길이는 같다 //temp는 아무리 늘어나도 3행 미만까지만 증가해야한다. 그래서temp++에 if문달아주기 // 열이 바뀌는 시점에 합계를 다시 계산할 수 있도록 sum을 // sum을 열 반복이 시작되는 부분에 작성 int sum = 0;//합계 누적용 변수 for(int row =0; row < arr.length; row++) { //행 반복 sum += arr[row][col]; } System.out.println(col + "번째 열 합 : " + sum); //열을 반복하는 for문의 조건식 부분에서 // 특정 행을 지정하는 temp값이 // 행의 마지막 인덱스를 초과하지 않도록 추가 조건(-1)을 작성 if(temp < arr.length - 1) { //temp가 2일때 arr.length == 3보다 작은게 조건에 맞기때문에 -1을 통해 // 0,1,2에서 끝나고 그 뒤에는 증가하지않게 해준다. temp++; } }
풀이
1. 2차원 배열 arr 선언
2. 행의 합 출력을 위한 행 반복for문
3. 행 합계 저장용 변수 sum을 for문 안에 선언하는 이유: 행이 바뀌는 시점에 합계를 다시 계산할 수 있도록 sum을 // sum을 행 반복이 시작되는 부분에 작성
4. 열 반복 for문 작성 후 sum += arr[row][col];에 한 행의 값 누적
5. 열이 3바퀴를 돌고 끝나는 행 for문 바깥 시점에 출력
6. 조건문 작성
반응형
'Backend > 문제 풀이' 카테고리의 다른 글
[Java] Polymorphism(다형성)_예제 (0) | 2021.09.11 |
---|---|
[Java] Inheritance(상속) 예제 (0) | 2021.09.08 |
[Java|연습] Array(배열)_lotto(Math.random()) (0) | 2021.09.02 |
[Java|연습] Array(배열)_초기화 (0) | 2021.09.02 |
[Java] 소수 판별 문제_for, if, flag (0) | 2021.08.31 |