ವರ್ಷದ ಲೀಟ್‌ಕೋಡ್ ಪರಿಹಾರದ ದಿನ


ತೊಂದರೆ ಮಟ್ಟ ಸುಲಭ
ಆಗಾಗ್ಗೆ ಕೇಳಲಾಗುತ್ತದೆ ZScaler
ಮಠ

ಸಮಸ್ಯೆ ಹೇಳಿಕೆ

"ವರ್ಷದ ದಿನ" ಎಂಬ ಸಮಸ್ಯೆಯಲ್ಲಿ ನಮಗೆ ನೀಡಲಾಗಿದೆ ಸ್ಟ್ರಿಂಗ್ ಅದು YYYY-MM-DD ಸ್ವರೂಪದಲ್ಲಿ ದಿನಾಂಕವನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಆ ದಿನಾಂಕದ ದಿನದ ಸಂಖ್ಯೆಯನ್ನು ಹಿಂದಿರುಗಿಸುವುದು ನಮ್ಮ ಕಾರ್ಯ.

ಕೊಟ್ಟಿರುವ ದಿನಾಂಕ 2020-01-05 ಆಗಿದ್ದರೆ. ಇದು 5 ರ ಜನವರಿ 2020, ಇದು 5 ವರ್ಷದ 2020 ನೇ ದಿನ. ಆದ್ದರಿಂದ, ನಾವು 5 ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತೇವೆ.

ಉದಾಹರಣೆ

date = "2019-01-09"
9

ವಿವರಣೆ:

 

ಕೊಟ್ಟಿರುವ ಉದಾಹರಣೆಯಂತೆ, ಕೊಟ್ಟಿರುವ ದಿನವು 9 ಜನವರಿ 2019 ಆಗಿದೆ. ಇದು 9 ರ 2019 ನೇ ದಿನವಾಗಿದೆ. ಆದ್ದರಿಂದ ಉತ್ತರ 9 ಆಗಿದೆ.

ವರ್ಷದ ಲೀಟ್‌ಕೋಡ್ ಪರಿಹಾರದ ದಿನ

ಇನ್ಪುಟ್ ಅನ್ನು ಸ್ಟ್ರಿಂಗ್ ಸ್ವರೂಪದಲ್ಲಿ ನೀಡಲಾಗಿರುವುದರಿಂದ ನಾವು ಸ್ಟ್ರಿಂಗ್‌ನಿಂದ ದಿನಾಂಕ, ತಿಂಗಳು ಮತ್ತು ವರ್ಷವನ್ನು ಪೂರ್ಣಾಂಕ ಡೇಟಾ ಪ್ರಕಾರದಲ್ಲಿ ಹೊರತೆಗೆಯಬೇಕು. ಆದ್ದರಿಂದ, ನಾವು ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ವಿಭಜಿಸುತ್ತೇವೆ ಮತ್ತು ಅದರಿಂದ ದಿನಾಂಕ, ತಿಂಗಳು ಮತ್ತು ವರ್ಷವನ್ನು ಹೊರತೆಗೆಯುತ್ತೇವೆ.

ಪ್ರತಿ ತಿಂಗಳು ದಿನಗಳ ಸಂಖ್ಯೆಯ ವಿಭಿನ್ನ ಎಣಿಕೆ ಹೊಂದಿರುವುದರಿಂದ. ಆದ್ದರಿಂದ ಪ್ರತಿ ತಿಂಗಳ ದಿನಗಳ ಸಂಖ್ಯೆಯನ್ನು ಗಮನದಲ್ಲಿರಿಸಿಕೊಳ್ಳಲು ನಾವು ಒಂದು ಶ್ರೇಣಿಯನ್ನು ಬಳಸುತ್ತೇವೆ ಮತ್ತು ಪ್ರತಿ ತಿಂಗಳ ದಿನಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸಂಗ್ರಹಿಸುತ್ತೇವೆ.

ಈಗ ನಾವು ಫೆಬ್ರವರಿ ತಿಂಗಳ ದಿನಗಳ ಸಂಖ್ಯೆಯನ್ನು ನಿಭಾಯಿಸಬೇಕಾಗಿದೆ ಏಕೆಂದರೆ ಅಧಿಕ ವರ್ಷಕ್ಕೆ ಇದು 29 ದಿನಗಳನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಅಧಿಕವಲ್ಲದ ವರ್ಷಕ್ಕೆ ಅದು 28 ಸಂಖ್ಯೆಯ ದಿನಗಳನ್ನು ಹೊಂದಿದೆ.

ಒಂದು ವರ್ಷ ಅಧಿಕ ವರ್ಷ:

  1. ಅದನ್ನು 400 ರಿಂದ ಭಾಗಿಸಿದರೆ
  2. ಇದನ್ನು 4 ರಿಂದ ಭಾಗಿಸಬಹುದು ಆದರೆ 100 ರಿಂದ ಭಾಗಿಸಲಾಗುವುದಿಲ್ಲ.

ವರ್ಷದ ಲೀಟ್‌ಕೋಡ್ ಪರಿಹಾರದ ದಿನ

ವರ್ಷದ ದಿನವನ್ನು ಲೆಕ್ಕಹಾಕಲು ಜನವರಿಯಿಂದ ನಿರ್ದಿಷ್ಟ ತಿಂಗಳ -1 ರವರೆಗೆ ಪ್ರತಿ ತಿಂಗಳ ಎಲ್ಲಾ ದಿನಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ. ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕದಿಂದ ದಿನಗಳ ಸಂಖ್ಯೆಯನ್ನು ಸೇರಿಸಿ. ಇದು ನಿರ್ದಿಷ್ಟ ದಿನಾಂಕಕ್ಕೆ ವರ್ಷದ ದಿನವನ್ನು ನೀಡುತ್ತದೆ.

ಅನುಷ್ಠಾನ

ವರ್ಷದ ದಿನದ ಸಿ ++ ಕೋಡ್

#include <bits/stdc++.h> 
using namespace std; 
int dayOfYear(string dt) {
  int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
  int y = stoi(dt.substr(0, 4)), m = stoi(dt.substr(5, 2)), d = stoi(dt.substr(8));
  if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
  while (--m > 0) d += days[m - 1];
  return d;
}
int main() 
{ 
 string date="2019-01-09";
 int ans=dayOfYear(date);
 cout<<ans<<endl;
 return 0;
}
9

ವರ್ಷದ ದಿನದ ಜಾವಾ ಕೋಡ್

import java.util.Arrays;
import java.util.Set ;
import java.util.HashSet;
public class Tutorialcup {
    public static int dayOfYear(String S) {
        int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        String[] s = S.split("-");
        int y = Integer.parseInt(s[0]);
        int m = Integer.parseInt(s[1]);
        int d = Integer.parseInt(s[2]);
        if (m > 2 && y % 4 == 0 && (y % 100 != 0|| y % 400 == 0)) ++d; 
        while (--m > 0) d += days[m - 1];
        return d;
    } 
  public static void main(String[] args) {
         String date="2019-01-09";
         int ans=dayOfYear(date);
        System.out.println(ans);
  }
}
9

ವರ್ಷದ ಲೀಟ್‌ಕೋಡ್ ಪರಿಹಾರದ ಸಂಕೀರ್ಣತೆಯ ವಿಶ್ಲೇಷಣೆ

ಸಮಯದ ಸಂಕೀರ್ಣತೆ

ಮೇಲಿನ ಕೋಡ್‌ನ ಸಮಯದ ಸಂಕೀರ್ಣತೆಯಾಗಿದೆ ಒ (1).

ಬಾಹ್ಯಾಕಾಶ ಸಂಕೀರ್ಣತೆ

ಮೇಲಿನ ಕೋಡ್‌ನ ಸ್ಥಳ ಸಂಕೀರ್ಣತೆಯಾಗಿದೆ ಒ (1).

ಉಲ್ಲೇಖಗಳು