반응형
2007년
문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
입력
첫째 줄에 빈 칸을 사이에 두고 x(1≤x≤12)와 y(1≤y≤31)이 주어진다. 참고로 2007년에는
1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
출력
첫째 줄에 x월 y일이 무슨 요일인지에 따라 SUN, MON, TUE, WED, THU, FRI, SAT중 하나를 출력한다.
예제 입력
1 1
예제 출력
MON
출처:https://www.acmicpc.net/problem/1924
문제 해결 과정:
-SUN, MON, TUE, WED, THU, FRI, SAT를 배열에 넣고
-x월 y일 을 1월 1일을 기준으로 몇일이 지났는지 계산
- d mod7을 한후 배열 인덱스를 정해준다.
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | #include<iostream> #include<string> using namespace std; int monthToDay(int m) { int d=0; for (int i = 1; i < m; i++) { switch (i) { case 1: d += 31; break; case 3: d += 31; break; case 5: d += 31; break; case 7: d += 31; break; case 8: d += 31; break; case 10: d += 31; break; case 12: d += 31; break; case 4: d += 30; break; case 6: d += 30; break; case 9: d += 30; break; case 11: d += 30; break; case 2: d += 28; break; } } return d; } string Day(int m, int d) { string day[7] = { "SUN", "MON", "TUE", "WED","THU","FRI", "SAT" }; d += monthToDay(m); return day[d % 7]; } int main() { int m, d; cin >> m; cin >> d; cout << Day(m,d)<<endl; return 0; } | cs |
반응형
'알고리즘' 카테고리의 다른 글
2017_11_25 <백준> 1260번 DFS와 BFS (0) | 2017.11.25 |
---|---|
2017_11_24<백준>2504번 괄호의 값 (c++) (0) | 2017.11.24 |
2017_11_23 <백준> 1978번 소수 찾기 (0) | 2017.11.23 |
2017_11_22 방 번호 (0) | 2017.11.22 |
2017_11_20 부녀회장이 될테야(규칙 찾기) (0) | 2017.11.20 |