티스토리 뷰

알고리즘(C++)/Programmers 알고리즘

2016 날짜 계산

개발하는꼬물이 2017. 10. 2. 23:55

문제. 2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요? 두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각

SUN,MON,TUE,WED,THU,FRI,SAT

를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다.


#include <iostream>
#include <string>
using namespace std;

string getDayName(int a, int b)
{
	string answer = "";

	int today = 0;

	// 금요일부터 시작
	string day[7] = { "FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU" };
	int month[12] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

	// 입력받은 날의 요일을 구하려면? 입력받은 월 이전 달까지의 합 + 남은 일수 
	for (int i = 0; i < a-1; i++)
	{
		today += month[i];
	}

	today = (today + b - 1 ) % 7;  // 남은 일자를 더해서 7로 나눠준 나머지를 구함 (-1은 1월 1일 제외하려고!)

	answer = day[today];
	return answer;
}

int main()
{
	int a = 5, b = 24;

	//아래는 테스트 출력을 위한 코드입니다.
	cout << getDayName(a, b);
}


'알고리즘(C++) > Programmers 알고리즘' 카테고리의 다른 글

최대공약수와 최소공배수  (0) 2017.10.02
최솟값 만들기  (0) 2017.10.02
소수 찾기  (0) 2017.10.02
콜라츠 추측  (0) 2017.10.02
행렬의 덧셈  (0) 2017.09.28
댓글