<p>Given a date, return the corresponding day of the week for that date.</p>

<p>The input is given as three integers representing the <code>day</code>, <code>month</code> and <code>year</code> respectively.</p>

<p>Return the answer as one of the following values&nbsp;<code>{&quot;Sunday&quot;, &quot;Monday&quot;, &quot;Tuesday&quot;, &quot;Wednesday&quot;, &quot;Thursday&quot;, &quot;Friday&quot;, &quot;Saturday&quot;}</code>.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> day = 31, month = 8, year = 2019
<strong>Output:</strong> &quot;Saturday&quot;
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> day = 18, month = 7, year = 1999
<strong>Output:</strong> &quot;Sunday&quot;
</pre>

<p><strong class="example">Example 3:</strong></p>

<pre>
<strong>Input:</strong> day = 15, month = 8, year = 1993
<strong>Output:</strong> &quot;Sunday&quot;
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li>The given dates are valid dates between the years <code>1971</code> and <code>2100</code>.</li>
</ul>

class Solution {
public:
    string dayOfTheWeek(int day, int month, int year) {
        int months[13] = {0, 31, 28, 31,30,31,30,31,31,30,31,30,31};

        string dayName[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
    
    int sum = 4;
    		for(int i = 1971; i < year; i++){
            if(((i % 4 ==0) && (i % 100 != 0)) || (i%400 == 0)){
                sum += 366;
            }else{
                sum += 365;
            }
        }
        for(int i =1;i<month;i++){
            if(i==2 && (((year%4 == 0) && (year%100 !=0)) || (year%400 ==0))){
                sum+= 1;
            }
            sum+= months[i];
        }
        sum += day;
        return dayName[sum%7];
    }
};
7300