본문 바로가기
Programming/PS

[BOJ] C언어 1924 2007년

by yoiii 2020. 12. 21.

BOJ C언어 1924 2007년 문제풀이

난이도 : BRONZE1


문제


오늘은 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중 하나를 출력한다.

소스코드


#include <stdio.h>

int main() {
	int daysOfMonth[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31 };
	const char *dayOfWeek[7] {"SUN","MON","TUE","WED","THU","FRI","SAT"};
	int month, day;
	scanf("%d %d", &month, &day);

	int i;
	for (i = 1;i < month; ++i) {
		day += daysOfMonth[i];
	}

	printf("%s\n", dayOfWeek[day % 7]);
	return 0;
}

 

풀이


int형 배열 daysOfMonth에 문제에서 제시해준 월별 날짜의 수를 담고,

char형 포인터 배열을 이용해 SUN ~ SAT 까지 정보를 초기화한다.

for 반복문을 돌려서, 입력한 달 까지의 날짜의 수를 모두 더해준 뒤,

% 나머지 연산자를 이용하여 7로 나누어 주고, 이를 dayOfWeek 의 인덱스로 활용하면, 미리 초기화 해 둔 요일 정보가 출력된다.


www.acmicpc.net/problem/1924

 

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

'Programming > PS' 카테고리의 다른 글

[BOJ] C언어 10818 최소,최대  (0) 2020.12.21
[BOJ] C언어 8393 합  (0) 2020.12.21
[BOJ] C언어 2739 구구단  (0) 2020.12.21
[BOJ] C언어 2741 N 찍기  (0) 2020.12.21
[BOJ] C언어 11721 열 개씩 끊어 출력하기  (0) 2020.12.21

댓글