문제
오늘은 2007년 1월 1일 월요일이다. 그렇다면 2007년 x월 y일은 무슨 요일일까? 이를 알아내는 프로그램을 작성하시오.
실행 결과
코드
#include <iostream>
using namespace std;
int main() {
int x, y;
cin >> x >> y;
int monthArr[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
string dayArr[7] = { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" };
int day=y;
for (int i = 0; i < x-1; i++) {
day += monthArr[i];
}
cout << dayArr[day % 7];
return 0;
}
구현 설명
월 배열과 요일 배열을 만든다.
입력한 월(x)의 바로 이전 월까지의 일 수와 입력한 일 수(y)를 더한다.
만약 제시된 입력 예시 중 3 14를 입력했다면 (31 + 28) + 14 이렇게 총 일 수를 구해야 한다.
일 수의 합계를 구하는 것은 최종적으로 요일을 구하기 위해서이다.
여기서 나머지 연산을 사용하여 총 일수를 7로 나누면 적절한 요일이 반환된다.
이는 2007년의 1월 1일이 월요일이기 때문에 가능하다.
문제 출처:
1924번: 2007년
첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다.
www.acmicpc.net
'PS' 카테고리의 다른 글
백준 2231번: 분해합 (0) | 2024.04.24 |
---|---|
백준 1977번: 완전제곱수 (0) | 2024.04.23 |
코드트리: 1시간 뒤 시간 출력 (c++) (0) | 2024.04.19 |
코드트리: 소수 (c++) (0) | 2024.04.18 |
백준 5597번: 과제 안 내신 분..? (0) | 2024.03.15 |