자바

JAVA STEP 21. Array 예제 모음

IT의 큰손 2023. 2. 14. 23:22
728x90

예제 1) 요구사항 : 아래와 같이 출력하시오.

  • 조건
    • 마지막 숫자가 100이 넘기 전까지 출력하시오.
  • 소스코드
  •  
package com.test.question;

public class Q0059 {

	public static void main(String[] args) {
		
		int num = 1;
		int sum = 1;
		
		String result = "";
		
		for(int i=1; ; i++) {
			
			
			result += num + " + ";
			num += i;
			
			
			if (num>=100) {
				break;
				
			}else {sum += num;
			
			}
			
		}
		System.out.println(result+" = "+sum);

	}

}
  • 실행결과

예제 1 실행 결과

 

예제 2) 요구사항 : 아래와 같이 출력하시오.

  • 조건
    • 마지막 숫자가 100이 넘기 전까지 출력하시오
  • 소스코드
  •  
package com.test.question;

public class Q0060 {

	public static void main(String[] args) {
		
		int num1 = 0;
		int num2 = 1;
		
		int oper = 0;
		int sum = 1;
		
		String result = "";
		
		while(true) {
			
			oper = num1+num2;
			
			if(oper>100) {
				break;
			}
			
			sum += oper;
			result += oper + " + ";
			
			num1 = num2;
			num2 = oper;
			
		}
		System.out.println("1 + " + result+" = "+sum);
	}

}
  • 실행결과

예제 2 실행 결과

 

예제 3) 요구사항 : 숫자를 5개 입력받아 배열에 담은 뒤 역순으로 출력하시오.

  • 조건
    • int[] nums = new int[5];
  • 소스코드
  •  
package com.test.question;

import java.util.Scanner;

public class Q0061 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		int[] nums = new int[5];
		
		
		for(int i=0; i<nums.length; i++) {
		
			System.out.print("숫자 : ");
			nums[i] = scan.nextInt();
			
		}
		
		for(int i=nums.length-1; i>=0; i--) {
			
			System.out.printf("nums[%d] = %d\n", i, nums[i]);
		}
		
	}
}
  • 실행결과

예제 3 실행결과

 

예제 4) 요구사항 : 학생의 이름을 N개 입력받아 아래와 같이 출력하시오.

  • 조건
    • 이름을 오름차순 정렬하시오.
  • 소스코드
  •  
package com.test.question;

import java.util.Arrays;
import java.util.Scanner;
import java.util.concurrent.ForkJoinTask;

public class Q0062 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		
		System.out.print("학생 수 : ");
		int input = scan.nextInt();
		
		String [] student = new String[input];
		
		for(int i=0; i<student.length; i++) {
			
			System.out.print("학생명 : ");
			student[i] = scan.next();
			
		}
		System.out.printf("입력한 학생은 총 %d명입니다.\n", input);
		
		Arrays.sort(student);
		
		for(int i=0; i<student.length; i++) {
			System.out.printf("%d. %s\n", i+1, student[i]);
		}
	}

}
  • 실행결과

예제 4 실행결과

 

예제 5) 요구사항 : int 배열을 매개변수로 받아 내용을 문자열로 반환하는 dump 메소드를 구현하시오.

  • 조건
    • String dump(int[] list)
  • 소스코드
  •  
package com.test.question;

import java.util.Scanner;

public class Q0063 {

	public static void main(String[] args) {
		int[] list = new int[4];
		
		Scanner scan = new Scanner(System.in);
		
		for(int i=0; i<list.length; i++) {
			
			System.out.printf("list[%d] : ",i);
			list[i] = scan.nextInt();
			
			
			
		}
		String result = dump(list);
		System.out.printf("nums = %s\n", result);

	}//main
	
	public static String dump(int[] list) {
		
		String temp = "[ ";
		
		for(int i=0; i<list.length; i++) {
			
			temp += list[i];
			
			if(i<list.length-1) {
				
				temp += ", ";
			}
		}temp += " ]";
		
		return temp;
	}

}
  • 실행결과

예제 5 실행결과

 

예제 6) 요구사항 : 1~20 사이의 난수를 담고 있는 배열을 생성하고 최댓값과 최솟값을 출력하시오.

  • 조건
    • 난수를 20개 발생 후 배열에 넣는다.
    • 난수는 1~20 사이
  • 소스코드
  •  
package com.test.question;

public class Q0064 {

	public static void main(String[] args) {
		int[] random = new int[20];
		int max = 0;
		int min = 0;
		
		String result = "원본 : ";
		
		for(int i=0; i<random.length; i++) {
			
			double a = Math.random()*20;
			random[i] = (int)a;
			
			result += random[i] + ", ";
			
		}
		
		for(int i=0; i<random.length; i++) {
			
			if (random[i] > max) {
				max = random[i];
			}
			
			if(random[i] < min) {
				min = random[i];
			}
		}
		System.out.println(result);
		System.out.printf("최대값 : %d\n", max);
		System.out.printf("최솟값 : %d\n", min);
	}

}
  • 실행결과

예제 6 실행결과

 

예제 7) 요구사항 : 난수를 담고 있는 배열을 생성한 뒤 아래와 같이 출력하시오.

  • 조건
    • 난수를 20개 발생 후 배열에 넣는다.
    • 난수는 1~20 사이
    • 배열을 탐색하여 범위에 만족하는 숫자만 출력한다.
  • 소스코드
  •  
package com.test.question;

import java.util.Scanner;

public class Q0065 {
	public static void main(String[] args) {
		
			Scanner scan = new Scanner(System.in);
			
			int[] random = new int[20];
			int max = 0;
			int min = 0;
			
			String result = "원본 : ";
			String result2 = "결과 : ";
			
			for(int i=0; i<random.length; i++) {
				
				double a = Math.random()*20;
				random[i] = (int)a;
				
				result += random[i] + ", ";
				
			}
			
			System.out.print("최대 범위 : ");
			max = scan.nextInt();
			System.out.print("최소 범위 : ");
			min = scan.nextInt();
			
			
			for(int i=0; i<random.length; i++) {
				
				if(min<=random[i] && random[i]<=max) {
					result2 += random[i] + ", ";
				}
				
			}
			System.out.println(result);
			System.out.println(result2);
	}
}
  • 실행결과

예제 7 실행결과

 

예제 8) 요구사항 : 중복되지 않는 임의의 숫자 6개를 만드시오. (로또)

  • 조건
    • 숫자의 범위 : 1 ~ 45
    • 오름차순 정렬
  • 소스코드
  •  
package com.test.question;

import java.util.Random;

public class Q0066 {

	public static void main(String[] args) {
		
		int [] rotto = new int [6];
		Random rd = new Random();
		
		String result = "";
		
		for(int i=0; i<rotto.length; i++) {
			
			rotto[i] = rd.nextInt(45)+1;
			
				for(int j=0; j<i; j++) {
					if(rotto[j]==rotto[i]) {
						i--;
						break;
					}
				}
		}
			
			result = "[";
			
			for(int k=0; k<rotto.length; k++) {
				result += rotto[k] +",";
			}
			result += "]";
		
		System.out.println(result);

	}

}
  • 실행결과

예제 8 실행결과

 

예제 9) 요구사항 : 배열에 요소를 삽입하시오.

  • 조건
    • 배열 길이 : 10
    • 마지막 요소는 우측으로 옮겨질 공간이 없으면 삭제된다.
  • 소스코드
  •  
package com.test.question;

import java.util.Arrays;
import java.util.Scanner;

public class Q0067 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scan = new Scanner(System.in);
		
		int [] nums = {5, 6, 1, 3, 2, 8, 7, 4, 10, 9};
		

		System.out.print("삽입 위치 : ");
		int index = scan.nextInt();
		System.out.print("값 : ");
		int value = scan.nextInt();
		
		System.out.printf("원본 : %s\n",Arrays.toString(nums));
		
		//1, 2, 3
		//for(int i=index; i<list.length-1; i++) {
		for(int i=nums.length-index; i>=index; i--) {
		
			nums[i+1] = nums[i];
			
		}
		nums[index] = value;
		System.out.printf("결과 : %s\n",Arrays.toString(nums));
	}

}
  • 실행결과

예제 9 실행결과

 

예제 10) 요구사항 : 배열의 요소를 삭제하시오.

  • 조건
    • 배열 길이 : 10
    • 마지막 요소는 0으로 채우시오.
  • 소스코드
  •  
package com.test.question;

import java.util.Arrays;
import java.util.Scanner;

public class Q0068 {

	public static void main(String[] args) {
		
		int [] list = {5,6,1,3,2,0,0,0,0,0};
		
		
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("삭제위치 : ");
		int index = scan.nextInt();
		
		System.out.println("원본 : ");
		Search(list);
		
		
		
		
		for(int i=index; i<list.length-1; i++) {
			
			list[i] = list[i+1];
	
			
		}
		
		list[list.length-1] = 0;
		System.out.print("결과 : ");
		
		Search(list);
		
	}//main
	public static void Search(int[] list) {
		
		String result = "[ ";
		
		for(int i=0; i<list.length; i++) {
			
			result += list[i];
			
			if(i<list.length-1) {
				result += ", ";
			}
	}
		result += "]";
		
		System.out.println(result);
	}
}
  • 실행결과

예제 10 실행결과

 

예제 11) 요구사항 : 배열의 요소를 순차적으로 2개씩 더한 결과를 배열로 생성한 뒤 출력하시오.

  • 조건
    • 원본 배열 길이 : 사용자 입력
    • 원본 배열 요소 : 난수(1~9)
    • 결과 배열 길이 : 사용자 입력/2
  • 소스코드
  •  
package com.test.question;

import java.util.Arrays;
import java.util.Scanner;

public class Q0069 {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		System.out.print("배열 길이 : ");
		int length = scan.nextInt();
		
		int [] nums = new int [length];
		
		for(int i=0; i<length; i++) {
		
			nums[i] = (int)(Math.random()*10);
		}
		
		int [] result = oper(nums);
		
		System.out.printf("원본 : %s\n", Arrays.toString(nums));
		System.out.printf("결과 : %s", Arrays.toString(result));
		
		

	}//main()
	
	public static int [] oper (int [] nums) {
		String result = "[ ";
		int [] temp = new int [nums.length/2];
		
		for(int i =0; i<nums.length; i+=2) {
			
			temp[i/2] = nums[i+1] + nums[i];
			
		} return temp;
		
	
		
		
	}

}
  • 실행결과

예제 11 실행결과

 

예제 12) 요구사항 : 아래와 같이 출력하시오

  • 출력
  •  

출력 사항

  • 소스코드
  •  
package com.test.question;

public class Q0070 {

	public static void main(String[] args) {
		
		int[][] nums = new int[5][5]; //5행 5열
		
		int n = 1;
		
		for(int i=0; i<5; i++) {
			
			if(i%2 ==0) {
				for (int j=0; j<5; j++) {
					nums[i][j] = n;
					n++;
				}
			}else {
				for (int j=nums[0].length-1; j>=0;j--) {
					nums[i][j] = n;
					n++;
				}
			}
			
		}
		printArray(nums);
	}

	private static void printArray(int[][] nums) {
		
		for (int i=0; i<nums.length; i++) {
			for(int j=0; j<nums.length; j++) {
				System.out.printf("%3d",nums[i][j]);
			}
			System.out.println();
		}
		
	}

}
  • 실행결과

예제 12 실행결과

 

예제 13) 요구사항 : 아래와 같이 출력하시오.

  • 출력
  •  

출력 사항

  • 소스코드
  •  
package com.test.question;

public class Q0071 {

	public static void main(String[] args) {
		
		int[][] nums = new int[5][5]; //5행 5열
		
		int n = 25;
		
		for(int i=0; i<5; i++) {
			
				for (int j=0; j<5; j++) {
					nums[i][j] = n;
					n--;
				}
			}
			
		printArray(nums);
	}

	private static void printArray(int[][] nums) {
		
		for (int i=0; i<nums.length; i++) {
			for(int j=0; j<nums.length; j++) {
				System.out.printf("%3d",nums[i][j]);
			}
			System.out.println();
		}
		
	}

}
  • 실행결과

예제 13 실행결과

 

예제 14) 요구사항 : 아래와 같이 출력하시오.

  • 출력
  •  

출력 사항

  • 소스코드
  •  
package com.test.question;

public class Q0072 {

	public static void main(String[] args) {
		int[][] nums = new int[5][5]; //5행 5열
		
		int n = 1;
		
		for(int i=0; i<5; i++) {
			
			if(i==0) {
				for (int j=0; j<5; j++) {
					nums[i][j] = n;
					n +=5;
				}n=2;
			}else if(i==1) {
				for (int j=0; j<5; j++) {
					nums[i][j] = n;
					n +=5;
				}n=3;
			}else if(i==2) {
				for (int j=0; j<5; j++) {
					nums[i][j] = n;
					n +=5;
				}n=4;
			}else if(i==3) {
				for (int j=0; j<5; j++) {
					nums[i][j] = n;
					n +=5;
				}n=5;
			}else if(i==4) {
				for (int j=0; j<5; j++) {
					nums[i][j] = n;
					n +=5;
				}
			}
		}

			
		printArray(nums);
	}

	private static void printArray(int[][] nums) {
		
		for (int i=0; i<nums.length; i++) {
			for(int j=0; j<nums.length; j++) {
				System.out.printf("%3d",nums[i][j]);
			}
			System.out.println();
		}
		
	}

}
  • 실행결과

예제 14 실행결과

 

예제 15) 요구사항 : 아래와 같이 출력하시오.

  • 출력
  •  

출력 사항

  • 소스코드
  •  
package com.test.question;

public class Q0073 {

	public static void main(String[] args) {
		int[][] nums = new int[5][5]; //5행 5열
		
		int n = 1;
		
		for(int i=0; i<5; i++) {
			
				for (int j=0; j<5-i; j++) {
					nums[i][j] = n;
					n++;
				}
			}
			
		printArray(nums);
	}

	private static void printArray(int[][] nums) {
		
		for (int i=0; i<nums.length; i++) {
			for(int j=0; j<nums.length; j++) {
				System.out.printf("%3d",nums[i][j]);
			}
			System.out.println();
		}
		
	}

}
  • 실행결과

예제 15 실행결과

 

예제 16) 요구사항 : 아래와 같이 출력하시오.

  • 출력
  •  

출력 사항

  • 소스코드
  •  
package com.test.question;

public class Q0074 {

	public static void main(String[] args) {
		int[][] nums = new int[5][5]; //5행 5열
		
		int n = 1;
		
		for(int i=0; i<nums.length/2+1; i++) {
				for (int j=2-i; j<=2+i; j++) {
					nums[i][j] = n;
					n++;
				}
			}
		for(int i=nums.length/2+1; i<nums.length; i++) {
				for(int j=i-2; j<=6-i; j++) {
					nums[i][j] = n;
					n++;
				}
		}
			
		printArray(nums);
	}

	private static void printArray(int[][] nums) {
		
		for (int i=0; i<nums.length; i++) {
			for(int j=0; j<nums.length; j++) {
				System.out.printf("%3d",nums[i][j]);
			}
			System.out.println();
		}
		
	}
}
  • 실행결과

예제 16 실행결과

 

예제 17) 요구사항 : 아래와 같이 출력하시오.

  • 출력
  •  

출력 사항

  • 소스코드
  •  
package com.test.question;

public class Q0075 {

	public static void main(String[] args) {
		int[][] nums = new int[5][5]; //5행 5열
		
		int n = 1;
		int sum = 0;
		
		for(int i=0; i<nums.length-1; i++) {
			for(int j=0; j<nums.length-1; j++) {
				
				nums[i][j] =n;
				nums[i][4] +=n;
				nums[4][j] +=n;
				nums[4][4] +=n;
				n++;
			}
			
		}
			
			
		


			
		printArray(nums);
	}

	private static void printArray(int[][] nums) {
		
		for (int i=0; i<nums.length; i++) {
			for(int j=0; j<nums.length; j++) {
				System.out.printf("%3d",nums[i][j]);
			}
			System.out.println();
		}
		
	}

}
  • 실행결과

예제 17 실행결과

 

예제 18) 요구사항 : 성적을 입력받아 아래와 같이 출력하시오.

  • 출력
  •  

출력 사항

  • 소스코드
  •  
package com.test.question;

import java.util.Arrays;
import java.util.Scanner;

public class Q0076 {

	public static void main(String[] args) {
		String[][] score = new String[10][3];
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("국어 점수 :");
		int kor = scan.nextInt();
		
		System.out.print("영어 점수 :");
		int eng = scan.nextInt();
		
		System.out.print("수학 점수 :");
		int math = scan.nextInt();
		
		for(int i=0; i<score.length; i++) {
			if(kor >=(i+1)*10) {
				score[i][0] = "■";
			}else
				score[i][0] = "";
			
			if(eng >=(i+1)*10) {
				score[i][1] = "■";
			}else
				score[i][1] = "";
			
			if(math >=(i+1)*10) {
				score[i][2] = "■";
			}else
				score[i][2] = "";
		}
		

		for(int i=score.length-1; i>=0; i--) {
			for(int j=0; j<score[0].length; j++) {
				System.out.printf(" %s", score[i][j] + "\t");
			}
			System.out.println();
		}
		System.out.println("---------------------");
		System.out.println("국어\t영어\t수학");
	}//main()
	
	

}
  • 실행결과

예제 18 실행결과

 

728x90