코딩 연습장/JAVA

자바로 코딩해보기 - 문제 : 배열

Do아 2021. 3. 16. 09:16
728x90

기록 #13

2020.06.18(목)

자바에서 배열

※ 자바에서 클래스 참고 ※

https://blog.naver.com/ehdk1409/221995390171

자바로 코딩해보기(기초 10) - 문제 : 클래스

기록 #122020.06.09(화)자바에서 클래스​​​​​​※ 자바에서 재귀함수 참고 ※https://blog.naver.com/...

blog.naver.com

배열은 같은 자료형의 여러 변수를 선언할때 배열을 사용하면 편리하게 선언을 할 수 있습니다.

★ 배열 문제 ★

참고: 책 <난 정말 자바를 공부한적이 없다구요>

*책과 코딩이 다를 수 있음*

문제1 (배열 문제는 아니지만 간단한 코딩해보기)

10명의 수강생 점수를 입력받아 A학점의 기준이 되는 점수를 출력한다.

문제2

Int형 1차원 배열을 매개변수로 전달받아서, 배열에 저장된 최대값, 그리고 최소값을 구해서 반환하는 메소드를 다음의 형태로 각각 정의하자.

Public static int minValue(int[] arr) {…}

Public static int maxValue(int[] arr) {…}

Int형 배열에 채워질 정수는 프로그램 사용자로부터 입력 받아야 하며, 배열의 길이는 임의로 결정하면 된다.

문제3

다음 메소드는 int형 1차원 배열에 저장된 값을 두 번째 매개변수로 전달된 값의 크기만큼 전부 증가시킨다.

Public static void addOneDArr(int[] arr, add)

{

For(int i=0; i<arr.length;i++)

Arr[i]+=add;

}

이 메소드를 기반으로 (이 메소드를 호출하는 형태로) int형 2차원 배열에 저장된 값 전부를 증가시키는 메소드를 다음의 형태로 정의하자

Public static void addTwoDArr(int [][] arr, int add) { …}

단 위 메소드는 2차원 배열의 가로, 세로 길이에 상관없이 동작해야 하면, 위의 메소드가 제대로 동작하는지 확인하기 위한 main메소드도 함께 정의해야한다.

문제4

다음의 형태로 표현된 2차원 배열이 존재한다고 가정해보자.

1 2 3

4 5 6

7 8 9

이러한 형태를 갖는 int형 2차원 배열이 인자로 전달되면, 다음의 형태로 배열의 구조를 변경시키는 메소드를 정의해보자.

7 8 9

1 2 3

4 5 6

* 해설 *

문제1

정수를 입력하고 싶을 때는 scanner를 사용해서 입력을 받습니다.

반복문을 사용하여 첫번째로 큰 수와 두번째로 큰 수를 각각

firstHighScore와 SecondHighScore에 넣어주고

두번째로 큰 점수를 출력해주면 그 점수가 A학점의 커트라인이 됩니다.

- 코드 -

import java.util.Scanner;

 

public class Day_0611Araay {

 

public static void main(String[] args) {

int firstHighScore=0;

int secondHighScore=0;

 

Scanner scoreInput = new Scanner(System.in);

 

for(int i=1; i<=10; i++) {

System.out.println("점수 입력 : ");

 

int score = scoreInput.nextInt();

 

if(score>=firstHighScore) {

secondHighScore = firstHighScore;

firstHighScore = score;

 

}

 

else if(score>=secondHighScore && score<firstHighScore) {

 

secondHighScore=score;

}

 

}

 

System.out.printf("A 학점은 %d점 이상입니다.\n", secondHighScore);

 

 

}

}

 

문제2

배열을 이용해서 전체 점수를 배열에 저장시켜 반복문을 사용해

배열에 있는 점수들중에 제일 큰 수와 작은 수를 비교해 출력합니다.

첫번째 minValue메소드의 반복문은 arr배열의 길이 만큼 반복하도록 만들고

result의 arr배열의 첫번째 값을 넣어주고 arr의 배열을 순서대로 비교하여

작은 수가 result로 들어가게끔 만들어줍니다.

maxValue도 minValue와 마찬가지로 반복문과 result를 형성하고

비교문만 바꿔주면 됩니다.

- 코드 -

import java.util.Scanner;

 

public class Third {

public static int minValue(int[] arr) {

 

int result=arr[0];

 

for(int i=0; i<arr.length; i++)

if(result>=arr[i])

result=arr[i];

 

return result;

}

 

public static int maxValue(int[] arr) {

 

int result=arr[0];

for(int i=0;i<arr.length; i++)

if(result<=arr[i])

result=arr[i];

 

return result;

 

}

 

public static void main(String[] args) {

 

Scanner num = new Scanner(System.in);

int[] arrayNum = new int[5];

 

for(int i=0; i<5; i++) {

System.out.print(i+1 + "번째 정수 입력 : ");

arrayNum[i]=num.nextInt();

}

 

System.out.println("제일 큰 수 : " + maxValue(arrayNum));

System.out.println("제일 작은 수 : " +minValue(arrayNum));

}

}

 

문제3

addOneDArr메소드는 arr배열과 add인수를 받아 각 배열요소에 반복문을 사용해 add만큼 더하는 메소드

addTwoDArr메소드는 2차원배열 arr과 add를 인수로 받아 각 배열의 add만큼 더하는 메소드

main에서 arr.length를 이용해 배열의 길이만큼 반복

- 코딩 -

public class Six {

 

public static void addOneDArr(int[] arr, int add) {

 

for(int i=0; i<arr.length; i++)

arr[i] +=add;

}

 

public static void addTwoDArr(int[][] arr, int add) {

 

for(int i=0; i<arr.length; i++) {

for(int j=0; j<arr[i].length;j++)

arr[i][j]+=add;

}

}

 

public static void main(String[] args) {

 

int[] arr = {1,2,3,4,5};

int[][] twoArr = {

{1,2},

{3,4,5},

{6,7,8,9}

};

 

System.out.print("증가되기전 1차원 배열 값 : ");

for(int i=0; i<arr.length; i++)

System.out.print(arr[i] + " ");

 

System.out.println();

 

addOneDArr(arr, 5);

System.out.print("증가된 후 1차원 배열 값 : ");

for(int i=0; i<arr.length; i++)

System.out.print(arr[i] + " ");

 

System.out.println();

 

System.out.println("증가되기전 2차원 배열 값 : ");

for(int i =0; i<twoArr.length; i++) {

for(int j =0; j<twoArr[i].length; j++) {

System.out.print(twoArr[i][j]+ " ");

 

}

System.out.println();

}

 

addTwoDArr(twoArr,3);

System.out.println("증가된 후 2차원 배열 값 : ");

for(int i =0; i<twoArr.length; i++) {

for(int j =0; j<twoArr[i].length; j++) {

System.out.print(twoArr[i][j]+ " ");

 

}

System.out.println();

}

 

}

 

}

 

문제4

- 코딩 -

public class Seven {

 

public static void changeArray(int[][] arr) {

int[] storeArray = arr[arr.length-1];

 

for(int i=arr.length-1; i>0; i--)

arr[i]=arr[i-1];

 

arr[0]= storeArray;

 

 

}

public static void main(String[] args) {

int[][] arr = {

{1,2,3},

{4,5,6},

{7,8,9}

};

 

System.out.println("2차원 배열 변경 전 ");

 

for(int i=0; i<arr.length; i++) {

for(int j=0; j<arr[i].length; j++)

{

System.out.print(arr[i][j] + " ");

}

System.out.println();

}

 

 

changeArray(arr);

System.out.println("2차원 배열 변경 후 ");

for(int i=0; i<arr.length; i++) {

for(int j=0; j<arr[i].length; j++)

{

System.out.print(arr[i][j] +" ");

}

System.out.println();

}

 

 

}

}

 

728x90