[C#] 11일차 - 73. 생애계산기C#/C#200제2021. 1. 31. 16:56
Table of Contents
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace A073_AgeCalculator
{
class AgeCalculator
{
static void Main(string[] args)
{
Console.WriteLine("생일을 입력하세요(yyyy/mm/dd) : ");
string birth = Console.ReadLine();
string[] bArr = birth.Split('/'); // '/'를 기준으로 나눠서 배열에 저장
int bYear = int.Parse(bArr[0]);
int bMonth = int.Parse(bArr[1]);
int bDay = int.Parse(bArr[2]);
int tYear = DateTime.Today.Year;
int tMonth = DateTime.Today.Month;
int tDay = DateTime.Today.Day;
int totalDays = 0;
// 올해의 1월 1일부터 오늘까지의 날짜 수
totalDays += DayOfYear(tYear, tMonth, tDay);
// 태어난 해의 생일부터 마지막 날까지의 날짜 수
int yearDays = IsLeepYear(bYear) ? 366 : 365; // 윤년이면 366 아니면 365
totalDays += yearDays - DayOfYear(bYear, bMonth, bDay);
for(int year=bYear+1; year < tYear; year++)
{
if (IsLeepYear(year))
{
totalDays += 366;
} else
{
totalDays += 365;
}
}
Console.WriteLine("total days from birth day : {0}일", totalDays);
}
// 평년을 기준으로 각 월의 누적 날짜 수
static int[] days = { 0, 31, 69, 90, 120, 151, 181, 212, 243, 273, 304, 334 };
public static int DayOfYear(int year, int month, int day)
{
return days[month - 1] + day + (month > 2 && IsLeepYear(year) ? 1 : 0);
}
private static bool IsLeepYear(int year)
{
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
}
}
반응형
'C# > C#200제' 카테고리의 다른 글
[C#] 11일차 - 75. 팩토리얼을 계산하는 메소드 (0) | 2021.02.05 |
---|---|
[C#] 11일차 - 74. 피라미드 메소드 (0) | 2021.02.05 |
[C#] 11일차 - 72. 윤년인지 알아내는 정적 메소드 (0) | 2021.01.31 |
[C#] 11일차 - 71. 소수인지를 알아내는 정적 메소드 (0) | 2021.01.31 |
[C#] 11일차 - 70. 세개의 숫자중 가장 큰 수를 찾는 정적 메소드 (0) | 2021.01.31 |
@반나무 :: 반나무_뿌리
3년차 WPF 개발자입니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!