알고리즘(종합)/Lv.1

Do it - 기본 자료구조

ch.0 2022. 11. 10. 12:28


 

윤년 / 평년 날짜 구하기

(배열, for문)

 

윤년은 4로 나눠 떨어지면서 100으로는 나눠떨이지면 안되지만 400으로 떨어지면 윤년이다.

package test;

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

public class Main {
	
	static int [][] day = {
			{31,28,31,30,31, 30,31,31,30,31, 30,31},
			{31,29,31,30,31, 30,31,31,30,31, 30,31},
	};
	
	static int isyear(int year) {

		if(year%4==0&&year%100!=0||year%400==0) {
			return 1;
		}
		return 0;

	}
	
	static int sumday(int year,int month) {
		int sum=0;
		
		for(int i=1; i<month; i++) {
			sum+= day[isyear(year)][i];
		}
		
		
		return sum;
	}

	public static void main(String[] args) throws IOException {

		int year;
		int month;
		int day;
		
		int total;
		
		int keep;
		do {
		
		Scanner sc = new Scanner(System.in);

		System.out.println("년도를 입력하시오.");
		year = sc.nextInt();
		System.out.println("월를 입력하시오.");
		month = sc.nextInt();
		System.out.println("일를 입력하시오.");
		day = sc.nextInt();
		

		total = sumday(year,month)+day;
		
		System.out.println("총경과 일수 : "+total);
		
		System.out.println("계속 하신다면 1을 입력하세요.");
		keep = sc.nextInt();
		
		
		}while(keep==1);
	}

}

 

입출력 방법만 BufferedReader 로 바꿔보자.

input 을 2013 3 13 으로...

		
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	StringBuilder sb = new StringBuilder();
	StringTokenizer st;
	
		System.out.println("년월일를 입력하시오. ex) 2022 3 13");

		st= new StringTokenizer(br.readLine()," ");
		year = Integer.parseInt(st.nextToken());
		month = Integer.parseInt(st.nextToken());
		day = Integer.parseInt(st.nextToken());
		

		

		total = sumday(year,month)+day;
		
		System.out.println("총경과 일수 : "+total);

 

 

 

 

 

.