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 |