과거⚰️

배열복습 || 응용 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] + " ");
			}
			
	}

}