[Java] 배열 연습문제 풀이
2024. 8. 4. 22:05ㆍJava/참조타입
Q1. 주어진 배열에서 최대값과 최소값을 출력하는 코드를 작성하시오. (for문)
A. 쉬운 문제는 Arrays.sort()를 이용하여 꼼수(?)를 쓰면 쉽게 풀 수 있다. 숫자를 오름차순으로 정렬하기 때문에 처음과 끝 값을 불러오면 최소값과 최대값이 된다.
public static void main(String[] args) {
int[] score = {79,88,91,33,100,55,95};
Arrays.sort(score);
System.out.println("최소값: " + score[0]);
System.out.println("최대값: " + score[score.length-1]);
}
정석으로 풀면 다음과 같다.
public static void main(String[] args) {
int[] score = {79,88,91,33,100,55,95};
int min = score[0];
int max = score[0];
for(int i=0; i<score.length; i++){
if(max < score[i]){
max = score[i];
} else if(min > score[i]){
min = score[i];
}
}
System.out.println("최소값: " + min);
System.out.println("최대값: " + max);
}
배열 중에 임의의 값을 대입한 뒤에 배열 중에 이 값보다 큰 값이나 작은 값이 있는지 계속 확인합니다. 그리고 발견하면 그 값을 대입해서 출력합니다.
Q2. 주어진 배열의 전체 합과 평균을 구해 출력하는 코드를 작성해보세요. (for 중첩문)
public static void main(String[] args) {
int[][] array = {
{95,86},
{83,92,96},
{78,83,93,87,88}
};
int sum = 0;
int count = 0;
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array[i].length; j++){
sum += array[i][j];
count++;
}
}
System.out.println("전체합 : " + sum);
System.out.println("전체평균 : " + (double)sum/count);
}
A. N차원 배열을 불러오기 위해서는 중첩 for문을 사용한다. length를 사용하기 어렵기 때문에(불가능하지는 않다. 다만, for문을 사용해서 각 항목의 length를 다 구해서 더해야하기 때문에 번거롭다) 중간에 count의 숫자를 하나씩 높여서 전체 갯수를 구할 수 있다. 그리고 int는 소수점을 저장하지 않기 때문에 double로 강제 변환하여 저장해주었다.
Q3. 0에서 9까지 담겨있는 배열 numArr이 있다. 각 배열의 인덱스에 저장된 값을 임의에 위치한 값과 바꾸는 작업을 100번 하고 그 결과를 출력해보시오.
public static void main(String[] args) {
int[] numArr = {0,1,2,3,4,5,6,7,8,9};
int tmp = 0;
for(int i = 1; i <= 100; i++){
for(int y = 0; y <numArr.length; y++){
tmp = numArr[y];
int random = (int)(Math.random() * numArr.length);
numArr[y] = numArr[random];
numArr[random] = tmp;
}
}
System.out.println(Arrays.toString(numArr));
}
A. 임시값을 만들어서 값을 바꾸어치는 방법이다. 유명한 방법이라 큰 어려움은 없다. 배열은 Arrays.toString으로 출력이 가능하다.
'Java > 참조타입' 카테고리의 다른 글
[Java] 배열 연습문제 (0) | 2024.08.04 |
---|---|
[Java] 배열 (0) | 2024.08.04 |
[Java] 참조 타입, 문자열, 열거형 (0) | 2024.08.03 |