[Java]/과제

083 - Java 과제 6 : 배열을 사용하여 사용자로부터 임의의 정수를 임의의 개수만큼 입력 받아, 입력 받은 수 중에서 가장 큰 수를 출력하는 프로그램

Jelly-fish 2023. 9. 5. 16:57

 

/*==========================
	■■■ 배열 ■■■	
	- 배열의 선언과 초기화
	- 배열의 기본적 활용
============================*/

// ○ 과제
//    사용자로부터 임의의 정수를 임의의 개수만큼 입력받아
//    입력받은 수 중에서 가장 큰 수를 출력하는 프로그램을 구현한다.
//    단, 배열을 활용하여 구현할 수 있도록 한다.

// 실행 예)
// 입력할 데이터의 개수   : 11
// 데이터 입력(공백 구분) : 45 11 26 35 66 97 50 2 123 10 7

// >> 가장 큰 수 → 123
// 계속하려면 아무 키나 누르세요...



import java.util.Scanner;


public class Test083
{
	public static void main(String[] args)
	{
		// 1. 변수 선언****************************************************************************
		Scanner sc = new Scanner(System.in);
		
		int inputLength;		// -->> 사용자가 입력할 데이터 개수를 입력받아서 저장하는 변수
		int[] intArr;			// -->> 사용자가 입력할 정수 데이터들을 각각의 요소에 받아 저장할 배열
		int max = 0;			// -->> 사용자가 입력한 정수 데이터들 중 최댓값을 저장할 변수
		
		
		// 2. 사용자로부터 입력할 데이터 개수 값을 입력받는다.***********************************************

		System.out.print("입력할 데이터의 개수 : " );
		inputLength = sc.nextInt();

		// 3. 입력할 데이터 개수 값을, int 타입 배열 intArr의 길이 값(빈 방의 값)으로 지정한다.******************

		intArr = new int[inputLength];	// → 0부터 ~ (inputLength - 1) 만큼의 빈 방이 생성되었다.

		// 4. 정수형 데이터를 inputLength만큼 입력 받고, 그 값을 배열 intArr의 인덱스에 저장한다.****************
		//				
		//			→	입력할 데이터 개수의 값들이 모두 들어 올 때까지 데이터 입력을 받고,
		//				입력 받은 값들을 정수형으로 변환하여
		//    			intArr[] 배열의 0번 방부터 ~ (inputLength - 1) 번째 방까지 저장한다.
		
		
		
		System.out.print("데이터 입력(공백 구분) : ");

		for (int i = 0; i < inputLength; i++)
		{	
			intArr[i] = sc.nextInt();
		}

		// 5. for문을 돌면서, intArr[] 배열의 첫 번째 방(index = 0)의 값을  max에 대입하고,
		//    intArr[0] 값과 다음 들어오는 요소 값인 intArr[1]을 비교 했을 때, intArr[1]이 크다면, 그 값을 max 변수에 저장한다.
		//    이 과정을 i = 0부터 ~ (inputLength - 1) 까지 반복한다.
		
		
		/* [Logic]▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
		 *  
		 *		① inputLength에 사용자가 입력한 데이터의 개수 값 int형으로 저장.
		 *  	
		 *		② 	┌[i = 0 ~ (inputLength - 1) 까지 다음을 반복]───────────────────────────────┐
		 *        		│
		 *        		│		______________________________________________
		 * 			│	ⓐ「	intArr의 0번 방부터 ~ (inputLength - 1) 번 방까지		
		 *			│		사용자가 입력한 정수형태의 데이터 값을 저장.		」		
		 *			│		 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄	
		 *			│		________________________________________________	
		 *			│	ⓑ「 max 값에 intArr[0] 값을 대입하고 i가 1증가 했을 때 비교할 대상인 intArr[1(i+1)]의 값과 비교하여	
		 *			│		max < intArr[i+1] 일 경우 → max에 intArr[i+1] 값 대입.	」	
		 *  			│		 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄	
		 * 			└──────────────────────────────────────────────────────────────────────────┘
		 * 		
		 * 		③ 결과 출력 : max 변수 출력.
		 * ▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤▤
		*/
		
		// max 의 초기값을 0으로 설정할 경우, 음수에서의 대소 비교를
		// 제대로 수행하지 못하게 된다!!!

		max = intArr[0];
		
		// max의 초기값을 intArr[0]으로 잡았기 때문에
		// 반복문의 루프변수 i[inArr의 인덱스값] 시작값을 1로 설정해 주었다.
		for (int i = 1; i < inputLength; i++)
		{
			 
			//	ⓑ[ max 값과, intArr[i]의 값을 비교 ] 하여	
			//	 	▶『	max < intArr[i] 』일 경우 → max에 intArr[i] 값 대입.
			if (max < intArr[i])
			{
				max = intArr[i];
			}

			System.out.println("max : " + max);
		}


		// 6. 결과 값 출력하기**********************************************************************
		// >> 가장 큰 수 → 123
		// 계속하려면 아무 키나 누르세요...
		
		//【 max에 저장된 최댓값을 출력한다. 】〓〓〓〓〓〓〓〓〓〓〓
		System.out.printf("\n>> 가장 큰 수 → %d\n", max);
		//〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
		

	}
}

// 실행 결과

/*
입력할 데이터의 개수 : 3
데이터 입력(공백 구분) : 10 -3 4

>> 가장 큰 수 → 10
*/


/*
입력할 데이터의 개수 : 5
데이터 입력(공백 구분) : 100 -23 48 89 345

>> 가장 큰 수 → 345
*/

/*
입력할 데이터의 개수 : 4
데이터 입력(공백 구분) : -899 94 100 -390
max : 94
max : 100
max : 100

>> 가장 큰 수 → 100
계속하려면 아무 키나 누르십시오 . . .
*/