'요일'에 해당되는 글 2건

  1. 2006.05.04 요일 구하기... 2
  2. 2006.04.25 달력과 요일 출력 프로그램 6

요일 구하기...

기타 TIP 2006. 5. 4. 18:04

일단 현재의 달력은 거의 모든 나라에서 사용하는 "그레고리력"입니다. 또한, 그레고리력에서 1년 1월 1일은 월요일이라고 하는 군요...

그리고 요일을 구하는 방법은 1년 1월 1일부터 원하는 날짜까지의 모든 일수를 더하고 나서 그 값을 7로 나눴을때의 나머지로 계산을 합니다.

7로 나눴을때 나머지가 0이면 일요일, 1이면 월요일, ...., 6이면 토요일입니다.

그럼 이제부터 모든 일수를 더하는 방법을 알려드리겠습니다...

2005년 5월 12일을 예로 들어서 알려드리겠습니다.

일단 주의할 점이 2005년 5월 12일은 2005년이 지나고 5개월이 지나고 12일이 지난것이라고 생각될 수도 있는데 이것은 잘못된 생각입니다....

2005년이 지나고 5개월이 지나고 12일이 지난 날짜는 2006년 6월 12일이겠죠...

다시 말하면 2004년이 지나고 4개월이 지나고 12일이 지난 날짜가 2005년 5월 12일이죠....

다음으로 넘어가서 일단 연도의 모든 일수를 구하는 방법을 알려드리겠습니다...

단순히 생각하면 위의 예를 기준으로 2004년이 지나간것이고 1년은 365일이니까 (2004년*365일)이 모든 일수겠죠....그러나 여기에서 윤년을 따져줘야 합니다....

(2004년*365일) 중에서 윤년인 경우는 2월이 하루가 더 많으니 윤년인 경우를 계산해서 그 일수를 더해주면 되겠죠...(윤년 계산방법은 아래 글에 있습니다...)

그럼 일단 1년 1월 1일부터 2004년 12월 31일까지의 모든 일수는 구해졌습니다....

이제 월을 구해보겠습니다....

위에서 말씀드렸듯이 5월달이라는 것은 4개월이 지났다는 뜻이니까 1~4월의 모든 일수를 더하면 되겠죠...(=31+28+31+30)

이 경우에도 역시 윤년이라면 +1을 해줘야겠죠....

월까지 구했다면 위에서 구한 연도의 모든 일수랑 월의 모든 일수를 더한후에 마지막으로 일수(12일)를 더합니다.(일수는 그냥 더하면 됩니다...)
그럼 원하는 날짜까지의 모든 일수가 구해집니다....

그 다음에는 7로 나누고 나머지를 구해서 요일을 따져주면 되겠죠....

아래에 수치적으로 계산을 한번 해보겠습니다.

예 : 2005년 5월 12일

연도 = (2004년*365일) + (2004/4) - (2004/100) + (2004/400)
       = 731460+ 501- 20.04 + 5.01
       = 731460+ 501- 20+5(소수부분 버림)
      = 731946일

월 = 1월~4월 = 31+28+31+30 = 120일
일 = 12일
총 일수 = 732078일
결과 : 732078 % 7 = 4 => 목요일

연도 구하는 부분에서 [+ (2004/4) - (2004/100) + (2004/400)] 이부분은 윤년을 계산후 처리하는 부분입니다.

아래 글 보시면 윤년에 대해서 아시겠지만 간략히 설명하면 (연도*365)일 해서 나온 총 일수에다가 일단 모든 윤년(=2004/4)을 더합니다.

그 다음에 (연도/100 = 2004/100)은 윤년이 아니기에 빼버려주고요....마지막으로 (연도/400 = 2004/400)는 또 다시 윤년이므로 더해줍니다...

이렇게 함으로써 특정날짜의 요일을 구할 수 있습니다....

Posted by Gungume
,



달력
요일계산

입력한 연도와 월의 달력과 입력한 날짜의 요일을 출력해주는 프로그램...

- 입력 형식 -
달력 : YYYY.MM
요일 : YYYY.MM.DD

(사용언어 : C++)

Posted by Gungume
,