211020 Java - 시험 풀이
1번(가장 작은 숫자와 가장 큰 숫자를 출력)
		//1번
		int[] score = {79, 88, 91, 33, 100, 55, 95};
        int max = score[0];
        int min = score[0];
        
        for(int i=0; i<score.length-1; i++) 
        {
        	if(min>score[i])
        	{
        		min = score[i];
        	}
        }
        System.out.println(min);
        
        for(int i=0; i<score.length-1; i++)
        {
        	if(max<score[i])
        	{
        		max = score[i];
        	}
        }
        System.out.println(max);
	}
두 숫자를 비교해서 작은 숫자를 대입한다.
MAX의 경우 반대이다.
2. 길이가 10인 배열 iArr을 생성하고  
0~9의 숫자로 차례대로 초기화하여 출력 한후 (포문 열번 돌림) 
random()을 이용해서 배열의 임의의 위치에 있는 값과  
배열의 첫 번째 요소인 iArr[0] 의 값을 교환하는 일을  
100번 반복하다가 끝낸후 iArr배열을 출력하는 프로그램 
출력예) 0123456789 
       5827164930 --이부분은 random 인덱스와 [0] 번째 값  
                   --교환으로 실행시마다 다른 결과 출력
2번
		int[] iArr = new int[10];
		int i, b, tmp;
        
        for(i=0; i<iArr.length; i++) 
        {
        	iArr[i] = i;
        	System.out.print(iArr[i]);
        }
       
        for(i=0; i<=100; i++)
        {
        	//랜덤 발생
        	b = (int)(Math.random()*10);
        	//변수 세개로 자리 바꾸기
        	tmp = iArr[0];
        	iArr[0] = iArr[b];
        	iArr[b] = tmp;
        }
        
        System.out.println();
        
        for(i=0; i<iArr.length; i++)
        {
        	System.out.print(iArr[i]);
        }
인덱스가 0~9까지 있으니까
랜덤을 이용해서 1~9까지 랜덤으로 뽑아낸다.
여기선 이 공식이 적용
T = A
A = B
B = T
3번
        // 3번
         * 
		int[] iArr = {95, 75, 85, 100, 50};
		int i, tmp;
		
		for(i=0; i<iArr.length-1; i++ )
		{
			for(int j=i+1; j<iArr.length; j++)
			{ //교환할 인덱스 값만 확보
				if(iArr[i] > iArr[j])
				{
					tmp = iArr[i];
					iArr[i] = iArr[j];
					iArr[j] = tmp;
				}
			}
            //여기서 교환 -> [i]에 값과 [교환할 인덱스 위치 값]과 교환
		}
		
		for(i=0; i<iArr.length; i++)
        {
        	System.out.printf("%d ", iArr[i]);
        }
select sort의 원리이며, 메소드는 따로 있다!
4번
		//로또
		int[] lotto = new int[45];
		int i, ran;
		
		for(i=0; i<lotto.length; i++)
		{
			lotto[i] = i+1;
		}
		
		for(i=0; i<6; i++)
		{
			//인덱스 교환을 해야하니까 +1을 넣지 않음 0부터 시작이니까 
			ran = (int)(Math.random()*45);
			tmp = lotto[i];
			lotto[i] = lotto[ran];
			lotto[ran] = tmp;
		}
		
		for(i=0; i<6; i++)
		{
			System.out.printf("ball[%d] = %d\n", i, lotto[i]);
		}
5. 연도와 월을 입력받아 해당 월의 날 수를 출력하다가 월이 0 이면 종료하는 프로그램 (단, 월이 잘못 입력되면 “잘못 입력하였습니다.” 출력) 
입.출력예) 년 = 2000
#윤년계산 : 1. 400년 마다 
                2. 4년 마다 오면서 100년은 제외
		Scanner sc = new Scanner(System.in);
		int[] days = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
		int year, month;
		
			
		while(true)
		{
			System.out.print("년 = ");
			year = sc.nextInt();
			System.out.print("월 = ");
			month = sc.nextInt();
			
			if(year == 0)
			{
				break;
			}
			if(0 < month && month < 13)
			{
				if(year%400 == 0 || year%4 == 0 && year%100 != 0)
				{
					days[2] = 29;
				}
                              else
                              {
					days[2] = 28;
					//바꿔주지 않으면 다음에 실행할 때도 윤년이 아닌 경우 29가 찍히기 때문에 꼭 넣어주어야한다. 
				}
				System.out.printf("입력하신 달의 날 수는 %d일입니다.\n\n", days[month]);
			}
			else
			{
				System.out.println("잘못 입력하였습니다.");
			}
		}
입력한 달의 수를 뽑아내는 코드이지만,
윤년의 경우 29일로 바꾸어준다!
if(year%400 == 0 || year%4 == 0 && year%100 != 0)
year%400 == 0 || (400년으로 나누어지거나)
year%4 == 0 && year%100 != 0 (4로 딱 나누어지지만 100으로 나누어지면 안 됨)
else 
{
days[2] = 28;
}바꿔주지 않으면 다음에 실행할 때도 윤년이 아닌 경우 29가 찍히기 때문에 꼭 넣어주어야한다.