Day1 -배수 출력, 2차원 배열

박경희·2023년 5월 23일
0

강의 복습 및 정리

목록 보기
5/38

첫날에 배운것을 응용하여 문제 풀어보기

  1. 배수 출력하기
public class Study1 {
    public static void main(String[] args) {
        int a = 6;  // 배수는 -> 1 2 3 6
   
        for (int i = 1; i <= 6; i++) {  // i는 1, i가 6보다 작거나 같으면, i증가
        
            if (a % i == 0) {
            // 만약 a를 i로 나눴을 때 나머지가 0이면
                System.out.println(i);  //i 출력
            }
            
            
// *배수 출력인데 출력이 높은 수부터(거꾸로) 나오게 하기.    

			int a = 6; // 1 2 3 6
           	  for (int i = a; i  > 0; i--){
              // i는 a이다, i가 0보다 클 때, i는 감소
              	   //i = 6 5 4 3 2 1 / 0
                 if (a % i == 0) {
                 //만약 a를 i로 나눴을 때 나머지가 0이면
                     System.out.println(i);  //i출력
                 }
  • i가 4나 5였을 때에는 나머지가 0이 아니기 때문에 출력되지 않는다.
  • a의 값을 다른 수로 바꾸면 그 수 의 배수를 출력할 수 있다.
  1. 배수 출력하기2
 		int a = 12;
        if(a % 2 == 0 && a % 3 ==0){
            System.out.println("2와 3의 배수");
        } else if (a % 2 == 0) {
            System.out.println("2의 배수");
        }else if (a % 3 == 0){
            System.out.println("3의 배수");
            }
  1. 2차배열 안의 수 출력하기
public class Test {
    public static void main(String[] args) {
       
        int[][] arr = {
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
       		 };
        
  Q1. 123456789 순으로 출력하기.
  
     	for (int i = 0; i < arr.length; i++){ 
           // i는 0, i가 배열 길이(3)보다 작으면, i증가
               for (int j = 0; j < arr.length; j++){
              // j는 0, j가 배열 길이(3)보다 작으면, j증가
                    System.out.println(arr[i][j]);
            }
        }
        //  arr[0][0] arr[0][1] arr[0][2]
        //  arr[1][0] arr[1][1] arr[1][2]
        //  arr[2][0] arr[2][1] arr[2][2] 이렇게 읽고 출력하는 것.

Q2. 987654321 순으로 출력하기.
		for (int i = arr.length; i > 0; i--){ 
              // i는 배열길이(3), i가 0보다 크면, i 감소
           for (int j = arr.length; j > 0; j--){
                 // j는 배열길이(3), j가 0보다 크면, j감소
              System.out.println(arr[i-1][j-1]);
                    // 배열 길이는 3이지만 배열을 읽을 때는 0, 1, 2 이 순으로 읽는다. 
 //                    그렇기 때문에 출력할 때 [2][2]부터 읽으려면 
 //                    [i-1], [j-1]로 넣어야 한다.
 //                    [3-1], [3-1]
 //                     [2],   [2]
                }
            }
            
  --> 처음 오류. int i = arr.length -1; i > 0; 방식으로  넣었다. 
  이렇게 했을 때에는 길이가 2부터 읽기 시작하기 때문에 2, 1 값만 돌고 0값을 읽지 않은 채 끝난다. 
  따라서  i > 0이 아니라 i >= 0 로 크거나 '같을때' 까지 읽을 수 있도록 해서 
  3개를 모두 읽을 수 있도록 해야한다.
  
  =>      for (int i = arr.length-1; i >= 0; i--){ 
             for (int j = arr.length-1; j >= 0; j--){
                System.out.println(arr[i][j]);
            }
        }
또다른 방법으로 987654321 출력하기 
for (int i = arr.length; i > 0; i--) {
            // arr.length = 3 -> 3, 2, 1
            
            for (int j = arr[i-1].length; j > 0; j--) { 
            //arr.length로 하면 길이가 3이 들어가는 거니까 3 2 1로 돌아가고
            // arr[i-1].lenght 로 하면 []이 배열 안의 값이 [3-1], [2-1], [1-1]이
               들어가서 [2], [1], [0]이 되므로 둘 다 987654321이 출력된다.
               
                System.out.println(arr[i - 1][j - 1]);
                // arr[i-1] = 2 arr [j-1] =2
                // arr[i-1] = 1 arr [j-1] = 1
                // arr[i-1] = 0 arr [j-1] = 0		
                --> 이렇게 출력될 값을 쳐보는 것도 필요하다.
                
Q3. 147258369 순서로 출력하기    
		for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.println(arr[j][i]); // j와 i  바꾸기
            // i가 0일때 j가 0, 1, 2 돌아가니까 j와 i를 바꾸면 세로로 출력받을 수 있다.
            }
        }

        

0개의 댓글