과거⚰️
배열복습 || 응용 4, 5
아무루
2020. 10. 21. 12:34
package day018;
public class Day01801배열복습 {
public static void main(String[] args) {
//1. 과일명과 개수 출
//2. 사과 10개, 딸기 4개, 망고 5개,
//사과 10개
//딸기 4개
//....
int[] cnt = {10, 4, 5 ,4, 3};
String[] fruits = {"사과", "딸기", "망고", "키위", "멜론"};
int size = cnt.length;
for(int i=0; i<size; i++) {
System.out.print(fruits[i]+"는 "+cnt[i]+"개");
if(i != size - 1) {
System.out.print(", ");
}
}
System.out.println();
//문제2 a와 b의 값을 비교해 더 큰 수를 c배열에 저장
//c = {83, 100, 100, 49, 17}
int[] a= {83, 100, 100, 49, 17};
int[] b= {23, 98, 100, 5, 17};
int[] c= {0, 0, 0, 0, 0,};
for(int i=0; i<5; i++) {
c[i]=a[i];
if(a[i]<b[i]) {
c[i]=b[i];
}
}
for(int i =0; i<5; i++) {
System.out.print(c[i]+" ");
}
System.out.println();
//3. 국, 영, 수 성적 평균이 60점 이상인 학생의 학번만 info 배열에 저장
int[] hakbun = {1001, 1002, 1003, 1004, 1005};
int[] kor = {98, 11, 23, 87, 54};
int[] eng = {11, 87, 58, 22, 81};
int[] math = {97, 60, 92, 87, 43};
double[] avg = new double[5];
int[] info = null;
int count = 0;
for(int i=0; i<5; i++) {
int tot=kor[i]+eng[i]+math[i];
avg[i] = tot/3.0;
if(avg[i]>=60) {
count++;
}
}
System.out.print("평균 : ");
for(int i =0; i<5; i++) {
System.out.print(avg[i]+" ");
}
System.out.println();
System.out.println("합격생은 " +count);
info = new int[count];
int x = 0;
for(int i=0; i<5; i++) {
if(avg[i]>=60) {
info[x]=hakbun[i];
x++;
}
}
for(int i=0; i<count; i++) {
System.out.print(info[i] + " ");
}
}
}
package day018;
public class Day01802배열문응용 {
public static void main(String[] args) {
// 문제 1) 아래 배열 a에서 내가 입력한 값만 빼고 b에 저장
// 예 1) 30입력 => b = {10, 20, 40, 50, 0}
int[] a = {10, 20, 30, 40, 50};
int[] b = { 0, 0, 0, 0, 0};
int num = 30;
// 1. num의 인덱스 검색하기 => 2
int numIdx = 0;
for(int i=0; i<5; i++) {
if(a[i] == num) {
numIdx = i;
}
}
System.out.println("numIdx = " + numIdx);
// 2. 1번에서 구한 위치값을 제외한 나머지를 b배열에 저장
int bIdx = 0;
for(int i=0; i<5; i++) {
if(i != numIdx) {
b[bIdx] = a[i];
bIdx = bIdx + 1;
}
}
for(int i=0; i<5; i++) {
System.out.print(b[i] + " ");
}
System.out.println();
// 문제 2) 아래 배열에서 내가 입력한 번호와 값만 빼고 d배열에 저장
int[] c = {1001, 40, 1002, 65, 1003, 70};
int[] d = {0, 0, 0, 0, 0, 0};
// 입력 => 1002
// d = {100, 40, 1003, 70, 0, 0}
int input = 1002;
int idx = 0;
for(int i=0; i<6; i+=2) {
if(c[i] != input) {
d[idx] = c[i]; // 번호
d[idx + 1] = c[i + 1]; // 값
idx = idx + 2;
}
}
for(int i=0; i<6; i++) {
System.out.print(d[i] + " ");
}
}
}
package day018;
public class Day01803응용5 {
public static void main(String[] args) {
//1. a의 값과 b의 값을 번갈아서 c에 저장
// c = {10, 20, 30, 40, 50, 60}
int[] a= {10, 30, 50};
int[] b= {20, 40, 60};
int[] c= {0, 0, 0, 0, 0, 0};
int j=0;
for(int i=0; i<6; i+=2) {
c[i] = a[j];
c[i+1] = b[j];
j++;
}
for(int i=0; i<6; i++) {
System.out.print(c[i] + " ");
}
System.out.println();
//d배열의 값을 한칸씩 앞으로 당겨 value의 값을 맨뒤에 저장
//d ={20, 30,40, 50,100}
int[] d= {10, 20, 30, 40, 50};
int value = 100;
for(int i=0; i<4; i++) {
d[i] = d[i+1];
}
d[4] = value;
for(int i=0; i<5; i++) {
System.out.print(d[i] + " ");
}
System.out.println();
//3. e 배열의 값을 뒤로 하나씩 밀어낸후, 맨 앞엘 value값을 저장
// e = {100, 10, 20, 30, 40}
int[] e= {10, 20, 30, 40, 50};
value = 100;
for(int i =4; i>0; i--) {
e[i] = e[i-1];
}
e[0] = value;
for(int i=0; i<5; i++) {
System.out.print(e[i] + " ");
}
}
}