티스토리 뷰
기준요일 2020.1.1 수요일에 대한 상대적 날짜 계산을 통해 요일을 구한다. 년들의 날짜를 더할 때는 사실 윤년일 때 366, 아닐 때 365를 더하는 알고리즘으로 해도 되는데 조금 더 일반적인 달력계산 체계를 위해 모든 월을 더하는 알고리즘으로 작성했다. 실제로 쓸 때는 365,366으로만 작성하면 n time을 몇 개 줄일 수 있다.
/* 3/19에 수정함 */
생각해보니까 365는 7로 나누면 1임 그러므로 윤년이 아닌 해는 걍 동일 일에 대해서 한 요일만이 늦어질 뿐임. 이걸 생각하면 더 쉽게 짤 수 있음. 물론 아래 코드는 각 달의 일을 수정해서 계산할 수 있게 해서 조금 무식한 풀이임 하지만 다시 똑똑한 코드를 짜는게 너무 귀찮으니까 두겠음. 실제로 빠른 계산을 해야하는 사람은 밑의 코드를 참고하지 않길 바람
#include<iostream>
#include<string>
using namespace std;
string str_day[] = { "일", "월", "화", "수", "목", "금", "토" };
int month_day[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
// 윤년인지 체크
void IsLeapYear(int year)
{
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
month_day[1] = 29;
else { //윤년이 아닌경우도 생각해줘야..
month_day[1] = 28;
}
}
//2020 1.1-->수 기준요일로 계산
void printDay(int year, int month, int day) {
int totalDay = 0;
if (year < 2020) { //2020년 1월1일로부터 몇일 전인지 체크
for(int i = 2019; i > year; i--) {
IsLeapYear(i);
for (int j = 0; j <= 11; j++) { //해당 년도의 모든 일을 더하기
totalDay += month_day[j];
}
}
IsLeapYear(year);
//달의 차이 계산
for (int i = month; i <= 11;i++) { //해당월 이후부터 12월까지의 일 계산
totalDay += month_day[i];
}
totalDay += month_day[month - 1] - day+1;
cout << str_day[(10 - (totalDay) % 7) % 7];
}
else { //year>=2020 /2020년 1월1일로부터 몇일이 흘렀는지 체크
for (int i = 2020; i < year; i++) { //그 년도 전까지
IsLeapYear(i);
for (int j = 0; j <= 11; j++) { //해당 년도의 모든 일을 더하기
totalDay += month_day[j];
}
}
IsLeapYear(year);
//달의 차이 계산
for (int i = 0; i < month-1; i++) { //그 달의 날짜는 더하면 안됨
totalDay += month_day[i];
}
//일 차 계산
totalDay += day-1;
cout << str_day[(totalDay + 3) % 7];
}
}
int main() {
int year, mon, day;
cout << "년 월 일 입력:";
cin >> year >> mon >> day;
cout << year << "년 " << mon << "월 " << day << "일" << "은 ";
printDay(year, mon, day);
cout << "요일 입니다." << endl;
}
아니 근데 시발
'기초 알고리즘 문제 풀이' 카테고리의 다른 글
6. UVa-11172 Relational Operator (0) | 2020.02.18 |
---|---|
5. X진수의 수 Y진수로 출력하기 (0) | 2020.02.18 |
4. All possible subset 문제 (0) | 2020.02.18 |
3. 임의의 정수 sequence에 대해 중복제거 정렬 sequence출력 (0) | 2020.02.18 |
1. 순열 출력 문제 (0) | 2020.02.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ML
- 매트랩
- 머신 러닝
- 이미지처리
- rnn
- 딥러닝
- Andrew ng
- 사진구조
- 영상구조
- 영상처리
- RGB이미지
- 신경망
- 컴퓨터 과학
- 자연어 처리
- 인덱스 이미지
- NLP
- 신호 및 시스템
- 연속 신호
- 컴퓨터과학
- CNN
- gradient descent
- 머신러닝
- 순환 신경망
- CS
- 매트랩 함수
- 이산 신호
- 이미지
- 밑바닥부터 시작하는 딥러닝
- Logistic Regression
- Neural Network
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함