1. 문제

/****************************************************************************** *

문제 3-1

******************************************************************************/

// 새로운 프로젝트와 Main.java 소스파일을 만든 후 아래 코드를 복사하여 소스파일에 삽입하라.

// [문제 3-1] 실행 결과를 참고하여 아래 코드를 완성하라.

import ...;

public class Main
{
    public static int[][] makeArray(Scanner s) {
        출력 결과를 참고하여 사용자로부터 정방형 배열 크기("array size? ")를 입력받고 배열을 생성한다. 
        필요한 배열의 원소들을 적절히 초기화한 후 배열을 리턴한다. 
        (초기화하지 않은 배열 원소는 0으로 자동 설정된다.)
    }

    public static void printArray(int arr[][]) {
        출력 결과를 참고하여 2차원 배열 arr[][]의 모든 원소들을 출력한다.
    }
    
    public static void main(String[] args) {
        Scanner scanner = 스캐너 객체 생성;
        int arr[][];
        
        { // 아래 과정을 계속 반복 수행한다.
            arr = makeArray(scanner);
            printArray(arr);
            System.out.print("continue? ");
            문자열 단어 하나를 입력 받음
            System.out.println();
            입력된 단어가 "yes"이면 계속 반복 수행하고 "yes"가 아니면 여기서 반복을 중단한다.
        }
 
        스캐너 객체 닫기;
        System.out.println("Done.");
    }
}




===============================================================================
==  [문제 3-1] 실행 결과
=============================================================================== 
array size? 2
arr[0] 0 1 
arr[1] 2 3 
continue? yes

array size? 3
arr[0] 0 0 1 
arr[1] 0 2 3 
arr[2] 4 5 6 
continue? yes

array size? 4
arr[0] 0 0 0 1 
arr[1] 0 0 2 3 
arr[2] 0 4 5 6 
arr[3] 7 8 9 10 
continue? yes

array size? 5
arr[0] 0 0 0 0 1 
arr[1] 0 0 0 2 3 
arr[2] 0 0 4 5 6 
arr[3] 0 7 8 9 10 
arr[4] 11 12 13 14 15 
continue? no

Done.

 

 

2. 전체코드

import java.util.*;

public class Main
{
    public static int[][] makeArray(Scanner s) {
      System.out.print("array size? ");
      int length = s.nextInt();
      int arr[][] = new int[length][length];
      int number = 1;
      for(int i=0; i<length; i++){
        for(int j=length - i - 1; j<length; j++){
          arr[i][j] = number++;
        }
      }
      return arr;
    }

    public static void printArray(int arr[][]) {
        //출력 결과를 참고하여 2차원 배열 arr[][]의 모든 원소들을 출력한다.
      for(int i=0; i<arr.length; i++){
        System.out.print("arr["+i+"] ");
        for(int j =0; j < arr[i].length; j++){
          System.out.print(arr[i][j]+" ");
        }
        System.out.println();
      }
    }
    
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int arr[][];
        
        while(true){ // 아래 과정을 계속 반복 수행한다.
            arr = makeArray(scanner);
            printArray(arr);
            System.out.print("continue? ");
            String str = scanner.next();
            System.out.println();
            //입력된 단어가 "yes"이면 계속 반복 수행하고 "yes"가 아니면 여기서 반복을 중단한다.
            if(!str.equals("yes")) break;
        }
 
        scanner.close();
        System.out.println("Done.");
    }
}

 

3. 대충 이해하기

내가 생각하는 가장 핵심 부분은 makeArray 메소드의 값을 집어넣는 부분이다.

결과화면 중 일부 캡쳐

결과를 쭉 나열해서 보니 하나의 공식을 발견할 수 있었는데 해당 공식은 아래와 같다.

값을 삽입할 첫 열(컬럼) : 입력한 사이즈에서 현재 입력될 행을 빼고 -1 (배열의 인덱스는 0부터 시작) 이라는 공식을 발견할 수 있었다.

 

이 내용을 그대로 JAVA로 구현한 것이 makeArray메소드의 이중 for문 부분이다.

'코딩이야기 > 연습문제' 카테고리의 다른 글

[라이브코딩 연습] JAVA 실습문제 4-2  (0) 2022.11.01
[라이브코딩 연습] JAVA 실습문제 4-1  (0) 2022.11.01
JAVA 실습문제 3-2  (0) 2022.10.28
JAVA 실습문제 3-3  (0) 2022.10.25

+ Recent posts