728x90

1.Ex02)

package days12;

import java.io.IOException;
import java.util.Random;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오전 10:03:16
 * @subject 배열의 정의, 선언, 생성, 초기화, 출력 등
 * @content 변수, 참조변수, 배열
 * 		변수는 메모리 저장공간을 의미 여러가지의 값을 저장할 수 있다.
 * 		참조변수는 주소값을 가지는 저장공간, 참조할 수 있는 주소값을 가지고 있다.
 * 		배열 단점 - 배열크기가 자동으로 증가/감소 X
 * 	 	
 */
public class Ex02 {

	public static void main(String[] args) throws IOException {
		// 제어문(for)+배열
		Random rnd = new Random();
		//0,1,2 - ArrayIndexOutOfBoundsException 
		int [] m = new int[3]; //배열의 크기를 3으로 잡겠다.
		
		int idx=0; //시작 인덱스:0
		char con='y';
		do {
			m[idx++]=rnd.nextInt(100); //0<=int<100
			System.out.printf(">배열 (%d)계속 초기화 할 꺼니?", idx);
			con=(char)System.in.read(); //y,Y, n, N con이라는 변수를 char형으로 읽어오겠다.
			System.in.skip(System.in.available());	//공백들은 다 제거 하겠다.
		//} while (con=='y'||con=='Y');
		} while (m.length !=idx&&Character.toUpperCase(con)=='Y');//인덱스 값(요소)가 넘지 않아야 한다.
												 //인덱스 값과 배열의 크기가 같으면 방이 다 찼다는 소리
		//Character.toUpperCase(con)=='Y' =>con에는 'y'가 저장되어 있고 추가로 "Y"값도 허용한다.
		
		disp(m); //disp()라는 함수로 배열을 출력하겠다.
		
		

	}//end of main

	public static void disp(int[] m) {
		for (int i = 0; i < m.length; i++) {
			System.out.printf("[%d]=%d\n", i, m[i]);
		}
		
	}

}

 

2.Ex02_02)

package days12;

import java.io.IOException;
import java.util.Random;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오전 10:03:16
 * @subject 배열의 정의, 선언, 생성, 초기화, 출력 등
 * @content 변수, 참조변수, 배열
 * 		변수는 메모리 저장공간을 의미 여러가지의 값을 저장할 수 있다.
 * 		참조변수는 주소값을 가지는 저장공간, 참조할 수 있는 주소값을 가지고 있다.
 * 		배열 단점 - 배열크기가 자동으로 증가/감소 X
 * 		=배열이 다 차면, 배열의 크기를 자동으로 증가시키자
 * 	 	
 */
public class Ex02_02 {

	public static void main(String[] args) throws IOException {
		Random rnd = new Random();
		int [] m = new int[3]; 
		
		int idx=0; 
		char con='y';
		do {
			//if(방이 부족하면) {
			//	배열크기를 증가시키자.
			//}
			
			if(m.length==idx) { //배열의 크기와 인덱스 값이 같으면 방이 다 찼음을 의미함.
				System.out.println("배열 크기 3개 증가...");
				int [] temp = new int[m.length+3]; //temp라는 임시 배열을 생성,m의 배열의 크기를 3증가 시키겠다.
				for (int i = 0; i < m.length; i++) {
					temp[i]=m[i]; //m의 배열을 temp에 복사를 하자.
				}
				m=temp; //temp에 m이라는 배열의 값이 저장이 된다.
				//System.arraycopy(m, 0, temp, 0, m.length); System.arraycopy사용하는 방
				
			}
			
			m[idx++]=rnd.nextInt(100); 
			System.out.printf(">배열 (%d)계속 초기화 할 꺼니?", idx);
			con=(char)System.in.read(); 
			System.in.skip(System.in.available());	
		} while (Character.toUpperCase(con)=='Y');
		
		disp(m); 
		
		

	}//end of main

	public static void disp(int[] m) {
		for (int i = 0; i < m.length; i++) {
			System.out.printf("[%d]=%d\n", i, m[i]);
		}
		
	}

}

 

3.Ex02_03)

package days12;

import java.util.Arrays;

/**
 * @author kimjieun
 * @date 2023. 2. 10.-오전 10:49:56
 * @subject		배열복사(copy) 							 /배열복제(clone)
 * @content
 */
public class Ex02_03 {

	public static void main(String[] args) {
		int [] m = {76, 34, 10};
		int [] temp = new int[m.length+3];
		//sol2)배열복사
		//Arrays 클래스? 배열을 다루기 쉽도록 기능(함수)가 구현되어 있는 클래스
		//Arrays.fill()
		//Arrays.toString()
		//Arrays.copyOf(null, 0);
		
		//1.기능 : System 클래스 안에 배열을 복사하는 메서드
		//2.매개변수 : src, srcPos, dest, destPos, length
		//3.리턴값(리턴자료형) : void
		System.arraycopy(m, 0, temp, 1, m.length);
		//src:source array 원본 배열
		//srcPos: starting position in the source array. 배열 위치를 어디서 부터?
		//dest:destination array(목적이 되는 배열)
		//destPos: starting position in the destination data. 배열의 목적지를 어디까지?
		//length : the number of array elements to be copied. 몇개를 복사할껀지
		System.out.println(Arrays.toString(m));
		
		/*sol1)배열복사
		for (int i = 0; i < m.length; i++) {
			temp[i]=m[i];
		}
		m=temp;
		
		System.out.println(Arrays.toString(m));
		*/
	}

}

 

4.Ex03)

package days12;

import java.util.Arrays;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오전 11:03:45
 * @subject
 * @content 1)배열 단점:배열크기 자동 증가/감소
 * 			2)배열 단점:추가(10), 삭제, 삽입(insert)
 * 			3)배열 단점:
 * 
 * 			->컬렉션 클래스:ArrayList 등등
 * 
 */
public class Ex03 {

	public static void main(String[] args) {
		
		int [] m = {3, 5, 2, 4, 1}; //나는 이 배열에 10이라는 값을 추가해서 넣고 싶다.
		//append() 배열에 어떤값을 맨뒤에 추가할때 사용하는 함수 append()라 한다.
		//배열의 크기를 체크해서 추가...
		
		//[삭제]	2번째 인덱스인 2를 삭제하겠다.
		/*
		m[2]=m[3];
		m[3]=m[4];
		m[4]=0;
		*/
		for (int i = 3; i < m.length; i++) {
			m[i-1]=m[i]; //2번째에 있는 것을 삭제하기 위해서 3번째 인덱스를 2번째 인덱스로 데리고 오므
		}
		m[m.length-1]=0;
		
		//[삽입]
		//1.배열 크기 증가 체크
		int [] temp = new int[m.length+3];
		System.arraycopy(m, 0, temp, 0, m.length);
		m=temp;
		//2 인덱스 위치에 100을 삽입...
		/*
		for (int i = 2; i < 5; i++) {
			m[i+1]=m[i]; //m에 i값을 불러와서 m[3]값에다가 넣는다는 의미이다.
		}
		*/
		for (int i = 4; i >=2; i--) {
			m[i+1]=m[i]; //m에 i값을 불러와서 m[3]값에다가 넣는다는 의미이다.
		}
		m[2]=100;
		System.out.println(Arrays.toString(m));
		
		//[수정]
		m[2]=10; //수정은 그냥 위치에다가 새로운 값을 집어 넣으면 된다.
		

	}

}

 

5.Ex04)

package days12;

import java.io.IOException;
import java.util.Random;
import java.util.Scanner;

/**
 * @author kimjieun
 * @date 2023. 2. 10.-오전 11:36:37
 * @subject ***시험***
 * @content 한 반에 30명인 학생의 성적 관리
 * 			학생이름, 학생의 국어점수, 수학, 영어점수 와 총점, 평균, 등수
 * 			1)각각의 학생정보를 입력: 이름, 국,영,수 점수 
 * 			2)총점, 평균, 등수 처리 
 * 			3)학생 정보를 출력.
 */
public class Ex04 {

	public static void main(String[] args) throws IOException {
		//배열사용
		final int STUDENT_COUNT = 30; //final 수정하지 않는다는 의미 중간에 STUDENT_COUNT=30 이외의 값으로 바뀌면 안


		String [] names = new String[STUDENT_COUNT];
		int [] kors = new int[STUDENT_COUNT];
		int [] engs = new int[STUDENT_COUNT];
		int [] mats = new int[STUDENT_COUNT];
		int [] tots = new int[STUDENT_COUNT];
		double [] avgs = new double[STUDENT_COUNT];
		int [] ranks = new int[STUDENT_COUNT];

		int cnt=0; //입력받은 학생수를 저장할 변수
		char con = 'y';

		String name;
		int kor, eng, mat, tot, rank;
		double avg;

		Scanner scanner = new Scanner(System.in);

		do {
			//입력
			System.out.print(">이름 국어 영어 수학 정보 입력?");
			name=getName();//scanner.next();
			kor=getScore();//scanner.nextInt();
			eng=getScore();//scanner.nextInt();
			mat=getScore();//scanner.nextInt();

			tot=kor+eng+mat;
			avg=(double)tot/3;
			rank=1; //등수는 그냥 1로 초기화 하겠다.


			//각 배열에 채워넣는 코딩
			names[cnt]=name;
			kors[cnt]=kor;
			engs[cnt]=eng;
			mats[cnt]=mat;
			tots[cnt]=tot;
			avgs[cnt]=avg;
			ranks[cnt]=rank;

			cnt++; //입력받을때 마다 등수가 1씩 증가함.


			System.out.print(">학생 입력 계속?");
			con=(char)(System.in.read());
			System.in.skip(System.in.available());
		} while (Character.toUpperCase(con)=='Y');

		System.out.printf(">입력받은 학생수 : %d명 \n", cnt);

		//[등수처리]
		/* 함수를 사용하지 않는 방
		for(int i=0; i<tots.length; i++) { //등수를 매길
			ranks[i]=1;
			for (int j = 0; j <tots.length; j++) { 
				//if(tots[i]<tots[j] && i!=j)	ranks[i]++;
				if(tots[i]<tots[j])	ranks[i]++;
			}
		}
		*/
		for (int i = 0; i < tots.length; i++) {
			ranks[i]=getRank(i+1,tots); //getRank의 함수에서 no(학생은) 1번 부터 시작하니
		}

		//입력받은 모든 학생 정보를 출력
		for (int i = 0; i < cnt; i++) {
			System.out.printf("[%d]\t%s\t%d\t%d\t%d\t%d\t%.2f\t%d\n",
					i+1, names[i], kors[i], engs[i], mats[i], tots[i], avgs[i], ranks[i]); 
			//배열의 인덱스는 0부터 시작하므로 i+1로 1만들어 주
		}
		
		//1등 학생의 성적정보(이름/국어/영어/수학/총점/평균/등급)을 출력
		System.out.println("1등 학생 정보출력하기");
		for (int i = 0; i < cnt; i++) {
			if(ranks[i]==1)
			System.out.printf("[%d]\t%s\t%d\t%d\t%d\t%d\t%.2f\t%d\n",
					i+1, names[i], kors[i], engs[i], mats[i], tots[i], avgs[i], ranks[i]); 
			//배열의 인덱스는 0부터 시작하므로 i+1로 1만들어 주
		}
		
		//1등부터 3등학생까지 학생의 성적정보(이름/국어/영어/수학/총점/평균/등급)을 출력
				System.out.println("1등 학생 정보출력하기");
				for (int i = 0; i < cnt; i++) {
					if(ranks[i]<=3)
					System.out.printf("[%d]\t%s\t%d\t%d\t%d\t%d\t%.2f\t%d\n",
							i+1, names[i], kors[i], engs[i], mats[i], tots[i], avgs[i], ranks[i]); 
					//배열의 인덱스는 0부터 시작하므로 i+1로 1만들어 주
				}
			

	}//end of main

	//학생의 번호를 입력하면 등수를 반환하는 함
	private static int getRank(int no, int[] tots) {
		// 총점
		int tot = tots[no-1];
		//모든 학생의 총점 비교 tots 배열
		int rank=1;
		for(int j=0; j<tots.length; j++) {
			if(tot<tots[j]) rank++;
		}
		return rank;
		
	}

	public static String getName() {
		// 성씨  128 개  44032   ~ 55203  임의의 정수 -> char  한글 한 문자
		char [] nameArr = new char[3];
		Random rnd = new Random();
		for (int i = 0; i < nameArr.length; i++) {
			nameArr[i] = (char)( rnd.nextInt('힣' - '가' + 1) + '가' ); //범위는 '가'<= rnd < '힣'이니까 +1
		}
		// char [] -> String 변환
		String name = new String( nameArr );
		return name;
	}

	public static int getScore() {
		return (int)(Math.random()*101); //0~100까지 국,영,수의 점수를 랜덤으로 부여받는 getScore함수 생
	}

}//end of class

 

6.Ex04_02)

package days12;

import java.util.Random;

public class Ex04_02 {

	public static void main(String[] args) {
		//5~21
		//0~16
		//rnd.nextInt(17)+5
		
		// 44032	55203
		//System.out.printf("%d\t%d\n", (int)'가', (int)'힣');
		
		Random rnd = new Random();
		char one=(char)(rnd.nextInt('힝'-'가' + 1)+'가');
		System.out.println(one);
		
		
	}

}

 

7.Ex04_03)

package days12;

import java.util.Arrays;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오후 2:06:48
 * @subject
 * @content
 */
public class Ex04_03 {
	public static void main(String args[]) {
		//등수처리? 총점을 가지고 비교하는게 나을것 cause,,, 평균은 소수점 3자리에서 반올림하기 때문
		
		int [] tots = {186,189,188,59,132,124};
		int [] ranks = new int[6];
		for(int i=0; i<tots.length; i++) { //등수를 매길
			ranks[i]=1;
			for (int j = 0; j <tots.length; j++) { 
				//if(tots[i]<tots[j] && i!=j)	ranks[i]++;
				if(tots[i]<tots[j])	ranks[i]++;
			}
		}
		System.out.println(Arrays.toString(tots));
		System.out.println(Arrays.toString(ranks));
		
		
	}//end of main
}//end of class
/*
 * for(int i=0; i<tots.length; i++){
            ranks[i] = 1; //1등으로 초기화
           
            for (int j = 0; j < tots.length; j++) { //기준데이터와 나머지데이터비교                             
                if(tots[i]<tots[j]){   //기준데이터가 나머지데이터라 비교했을때 적으면 rank[i] 카운트
                    ranks[i]++; //COUNT                 
                }              
            }          
        }      
       
        //[3] 출력
        for (int i = 0; i < tots.length; i++) {
            System.out.printf("\t%s점%s등",tots[i],ranks[i]);           
        }
 
*/

 

8.Ex05)

package days12;

public class Ex05 {

	public static void main(String[] args) {
		int [] score = { 79, 88, 91, 33, 100, 55, 95 };
		int max = score[0];
		int min = score[0];
		for (int i = 1; i < score.length; i++) {
			if(max<score[i]) max=score[i];
			else if(min>score[i]) max=score[i];
		}
		System.out.println("최대값: "+ max);
		System.out.println("최소값: "+ min);
	}

}

 

9.Ex06)

package days12;

import java.util.Arrays;
import java.util.Random;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오후 3:05:51
 * @subject 카드섞기, 화투 섞기 등등
 * @content
 */
public class Ex06 {

	public static void main(String[] args) {
		int [] m = { 0,1,2,3,4,5,6,7,8,9 };
		System.out.println(Arrays.toString(m));
		
		shuffle(m);
		System.out.println(Arrays.toString(m));
		
		
	}//end of main

	private static void shuffle(int[] m) { //카드 섞기
		
		Random rnd = new Random();
		int idx1=0, idx2; //idx1만 0으로 받고 idx2만 값을 랜덤으로 해서 섞겠다.
		//int idx1, idx2; //첫번째 위치 /굳이 두개다 랜덤값 받을 필요없으니
		
		for(int i=0; i<100; i++) {
			//idx1=rnd.nextInt(m.length); idx1=0으로 고정시키지 않았을 때 사용!
			idx2=rnd.nextInt(m.length);
			System.out.printf("%d-%d \n", idx1, idx2);
			
			int temp=m[idx1];
			m[idx1]=m[idx2];
			m[idx2]=temp;
		}
		
		
		
	}//end of shuffle

}//end of class

 

10.Ex07)

package days12;

import java.util.Arrays;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오후 3:20:03
 * @subject 정보처리기사 실기(알고리즘)
 * @content
 * 			정렬(Sort): 특정 기준에 맞게 데이터를 열거하는 알고리즘.
 * 			(성적순, 키순, 나이순...)
 * 			정렬 - 오름차순(ascending) 정렬 1,2,3,4,5 가나다라마 abcde 작은->큰
 * 				   내림차순(descending) 정렬 5,4,3,2,1 마라다나가 edcba 큰->작은 
 * 			[정렬 알고리즘 방법]
 * 			1.버블정렬, 선택정렬, 삽입정렬, 병합정렬
 * 			버블 정렬(Bubble Sort) : 인접한 두 원소를 검사하며 정렬하는 알고리즘.
 * 			선택 정렬(Selection Sort) : 배열 내 원소의 수만큼 순환하며 최소값을 앞으로 배치하는 알고리즘.
 * 			삽입 정렬(Insert Sort) : 정렬되지 않은 원소를 적절한 위치에 삽입하는 알고리즘.
 * 			병합 정렬(Merge Sort) : 이미 정렬된 2개의 배열을 병합하여 새로운 배열로 만드는 알고리즘.
 */
public class Ex07 {

	public static void main(String[] args) {
		// [버블정렬(bubble sort)]-asc(오름차순)정렬
		//-두 개의 인접한 자료 값을 비교하면서 위치를 교환하는 방식으로 정렬하는 방법
		int [] m = {3, 5, 2, 4, 1};
		System.out.println(Arrays.toString(m));
		//bubbleSort(m);

		//선택정렬
		SelectionSort(m);



	}//end of main

	public static void SelectionSort(int[] m) {
		/*
		Arrays.sort(m);
		System.out.println(Arrays.toString(m));
		 */

		//1회전:m[0]=가장작은 값(5개중);
		int minIndex = 0;
		for (int i = 1; i < m.length; i++) {
			if(m[minIndex] > m[i]) {
				minIndex = i;
			}
		}
		System.out.println("> minIndex = " + minIndex);

		int temp = m[0];
		m[0] = m[minIndex];
		m[minIndex] = temp;

		System.out.println( Arrays.toString(m) );

		// 2회전 : m[1] = 가장작은값 (4개중);  
		minIndex = 1;
		for (int i = 2; i < m.length; i++) {
			if(m[minIndex] > m[i]) {
				minIndex = i;
			}
		}
		System.out.println("> minIndex = " + minIndex);

		temp = m[1];
		m[1] = m[minIndex];
		m[minIndex] = temp;

		System.out.println( Arrays.toString(m) );

		// 3회전 : m[2] = 가장작은값 (3개중);  
		minIndex = 2;
		for (int i = 3; i < m.length; i++) {
			if(m[minIndex] > m[i]) {
				minIndex = i;
			}
		}
		System.out.println("> minIndex = " + minIndex);

		temp = m[2];
		m[2] = m[minIndex];
		m[minIndex] = temp;

		System.out.println( Arrays.toString(m) );
		// 4회전 : m[3] = 가장작은값 (2개중); 
		minIndex = 3;
		for (int i = 4; i < m.length; i++) {
			if(m[minIndex] > m[i]) {
				minIndex = i;
			}
		}
		System.out.println("> minIndex = " + minIndex);

		temp = m[3];
		m[3] = m[minIndex];
		m[minIndex] = temp;

		System.out.println( Arrays.toString(m) );

		/*
		int minIndex = 0;
		for (int i=0; i < m.length-1; i++) {
			int minIndex=i;
			for(int j=i+1; j<m.length; j++) {
				if(m[minIndex]>m[j]) minIndex=j;
			}
		}
		System.out.println(">minIndex = " + minIndex);
		int temp=m[i];
		m[i]=m[minIndex];
		m[minIndex]=temp;
		System.out.println( Arrays.toString( m ) );
		*/

	}
	/*
	public static void SelectionSort(int[] m) {
		//0-1 0-2 0-3 0-4
		//1-2 1-3 1-4
		//2-3 2-4
		//3-4
		for (int i = 0; i < m.length-1; i++) {
			for (int j = i+1; j < m.length; j++) {
				System.out.printf("%d-%d ", i, j);
				if( m[i] > m[j] ) {
					System.out.print(" *** ");
					int temp = m[i];
					m[i] = m[j];
					m[j] = temp;
				}
				System.out.println(Arrays.toString(m));
			} // for j

		}  // for i

	}*/

	public static void bubbleSort(int[] m) {
		// [버블정렬( bubble sort )] - asc( 오름차순 ) 정렬
		//  - 인접한 두 원소를 검사하며 정렬하는 알고리즘.
		//  - 두 개의 인접한 자료 값을 비교하면서 위치를 교환하는 방식으로 정렬하는 방법      
		//		0 -1 을 비교해서 3이 5보다 크면 3을 뒤로 보내고 작으면 그대로...
		//			3  5  2  4  1
		//			3  2  5  4  1
		//          3  2  4  5  1
		//   		3  2  4  1 [5]   ->1회차
		//			2  3  4  1 [5]
		//			2  3  4  1 [5]        
		//			2  3  1 [4][5]   ->2회차
		//			2  3  1 [4][5]
		//			2  1 [3][4][5]	 ->3회차
		//			1 [2][3][4][5]	 ->4회차

		//          0-1  1-2  2-3  3-4   1회차 ****
		//          0-1  1-2  2-3        2회차 ***
		//          0-1  1-2             3회차 **
		//          0-1                  4회차 *
		//          [1][2][3][4][5]
		// i=0  j=3
		// i=1  j=2
		// i=3  j=1
		// i=4  j=0
		// i+j=4
		// j=4-i
		for (int i = 0; i < 4; i++) {                     // i = 행 갯수
			for (int j = 0; j < 4-i; j++) {  // j = 열(별) 갯수
				System.out.printf("%d-%d ", j , j+1);
				if( m[j] > m[j+1]) { 
					System.out.print( " *** ");
					int temp = m[j];
					m[j] = m[j+1];
					m[j+1] = temp;
				}
				System.out.println(  Arrays.toString( m ) );
			} 
		}//for


	}//end of bubble sort

}//end of class

 

11.Ex08)

package days12;
/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오후 4:53:37
 * @subject
 * @content
 */
public class Ex08 {

	public static void main(String[] args) {
		// 

	}

}

 

12.Test01)

package days12;

import java.util.Scanner;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오전 9:06:59
 * @subject 1. 년도와 월을 입력받아서 달력 출력
 * @content
 */
public class Test01 {

	public static void main(String[] args) {
	      Scanner scanner = new Scanner(System.in);
	      int year, month;

	      System.out.printf("> 출력하고 싶은 년도와 원을 입력하세요? ");
	      year = scanner.nextInt();
	      month = scanner.nextInt();
	      printCalendar(year, month);
	   } // end of main
	 
	   private static void printCalendar(int year, int month) {
	      int lastDay = getLastDay(year, month);
	      int dayOfWeek = getDayOfWeek(year, month, 1); 
	      System.out.printf("\t[%d년 %d월]\n", year, month );
	      days08.Ex03_02.drawLine(60,'-');
	      String week="일월화수목금토";
	      for(int i=0; i< week.length(); i++) System.out.printf("\t%c", week.charAt(i));
	      System.out.println(); 
	      System.out.println( "-".repeat(60));
	      for(int i=0; i<dayOfWeek; i++) {
	    	  System.out.print("\t");
	      }
	      
	      for(int i=1; i<=lastDay; i++) {
	    	  System.out.printf("\t%d", i);
	    	  if((i+dayOfWeek)%7==0) {
	    		  System.out.println();
	    	  }
	      }
	      
	      System.out.println(); 
	      System.out.println( "-".repeat(60));
	   }

	   private static int getDayOfWeek(int year, int month, int day) {
	      int totalDays = getTotalDays(year, month, day);
	      int dayOfWeek = totalDays % 7;
	      return dayOfWeek; 
	   }

	   
	   private static int getTotalDays(int year, int month, int day) {
	      int totalDays = 0; 
	      totalDays = ( year - 1 ) * 365 + ( year - 1 )/4 - ( year - 1 )/100 + ( year - 1 )/400 ; //이전년도의 날짜 계산
	      int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };      
	      for (int i = 0; i < month - 1; i++)           totalDays += months[i];
	      if( month >= 3 && days08.Ex04.isLeapYear(year) ) totalDays++;
	      totalDays += day;      
	      return totalDays;
	   }

	   private static int getLastDay(int year, int month) { 
	      int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
	      if (month == 2)
	         return days08.Ex04.isLeapYear(year) ? 29 : 28;
	      return months[month - 1];
	   }

	

}

 

13.Test02)

package days12;

import java.util.Scanner;

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오전 9:07:43
 * @subject 2. 머니(money)를 입력받아서 화폐단위 갯수 출력 
    ( 조건 : 스위치 변수 사용 )
 * @content
 */
public class Test02 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println(">얼마를 계산하시나요?");
		int money, unit=50000;
		money=scanner.nextInt();
		boolean sw = false;  
		int count = 0; 
		while( unit >= 1) {
			count = money / unit; 
			System.out.printf("%d원 : %d 개\n", unit, count);
			money %= unit;			
			unit /= ( !sw ? 5 :2 ); 
			sw = !sw; 
		}
		
	}

}

 

14.Test03)

package days12;

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

/**
 * 
 * @author kimjieun
 * @date 2023. 2. 10.-오전 9:07:56
 * @subject 3. 10진수 정수(int)를 입력받아서 16진수로 출력.
 * @content
 */
public class Test03 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.println(">십진수는?");
		int n=scanner.nextInt();
		String hexN=Integer.toHexString(n);
		//int zeroCount = 16-hexN.length();
		//System.err.printf("%s%s", "000000000000",hexN);
		//System.out.println(Integer.toHexString(n));
		System.out.println(hexN);
		//Arrays.fill(hex, '0');


	}

}
/*
// 16진법 : 0 1 2 3 4 5 6 7 8 9 10(a)~ 15(f)
int n = 123;   // 7B
  int 몫, 나머지;  // share, rest

// String b = "0101"; -> 1010
  char [] hex = new char[4]; // [0][0][7][B]
  
  for (int i = 0; i < hex.length; i++) {
   hex[i] = '0';
}
  
  int index = hex.length-1;  // 3
while( n != 0) {
   몫 = n/16;
   나머지 = n%16; 
   // 10(A) 11(B)  12(C)  ~ 15(F)          'F'
   
   // 나머지 =  나머지 >=10? 나머지 + 55 : 나머지;
   char value =  (char)( 나머지 += 나머지 >=10 ? 55 : 48 ) ; 
   
   hex[index--] = value;
   
   /*
   if ( 나머지 >= 10) {
      switch (나머지) {
      case 10:
         b += 'A';
         break;
      case 11:
         b +='B';
         break;

      default:
         break;
      }
   } else {
      b += 나머지;
   }
   
   

   n =  몫;
} // 
 
System.out.println( "0x"+ Arrays.toString( hex ) );



} // end of main

} // end of class
*/

 

728x90