<p>Given a string <code>date</code> representing a <a href="https://en.wikipedia.org/wiki/Gregorian_calendar" target="_blank">Gregorian calendar</a> date formatted as <code>YYYY-MM-DD</code>, return <em>the day number of the year</em>.</p>

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

<pre>
<strong>Input:</strong> date = &quot;2019-01-09&quot;
<strong>Output:</strong> 9
<strong>Explanation:</strong> Given date is the 9th day of the year in 2019.
</pre>

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

<pre>
<strong>Input:</strong> date = &quot;2019-02-10&quot;
<strong>Output:</strong> 41
</pre>

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

<ul>
	<li><code>date.length == 10</code></li>
	<li><code>date[4] == date[7] == &#39;-&#39;</code>, and all other <code>date[i]</code>&#39;s are digits</li>
	<li><code>date</code> represents a calendar date between Jan 1<sup>st</sup>, 1900 and Dec 31<sup>th</sup>, 2019.</li>
</ul>

class Solution {
public:
    int dayOfYear(string date) {
        vector<pair<int, int>> days = {{1, 31}, {2, 28},  {3, 31},  {4, 30},
                                       {5, 31}, {6, 30},  {7, 31},  {8, 31},
                                       {9, 30}, {10, 31}, {11, 30}, {12, 31}};
        int ans = 0;
        int year = stoi(date.substr(0, 4));
        int month = stoi(date.substr(5, 2));
        int day = stoi(date.substr(8, 2));
        int leap = 0;
        if (((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) &&
            (month >= 3)) {
            leap = 1;
        }
        for (auto it : days) {
            int month_check = it.first;
            if (month_check != month) {
                ans += it.second;
            } else {
                break;
            }
        }
        ans += day;
        if (leap == 1) {
            ans++;
        }
        return ans;
    }
};
12300