Problem: Finding date of week of 2016 when a month and date is given

January 1st of 2016 is Friday. Then what is the date of week of day b, month a? Get a, b as an input complete a function that returns a date of week. For example, if a=5, b=24 –> May 24th of 2016 is Tuesday so the function must return TUE.

문제: 월과 일이 주어졌을 때 2016년 기준으로 요일 알아내기

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 TUE를 반환하세요.

Java

My Solution

class Solution {
    public String solution(int a, int b) {
      String answer = "";
      int[] month={31,29,31,30,31,30,31,31,30,31,30,31}; //initialize dates of month
      int date=b-1;
      for(int i=0;i<a-1;i++){ //since index starts from 0, loop until a-1
          date+=month[i];
      }
      switch(date%7){
          case 0:
              answer="FRI";
              break;
          case 1:
              answer="SAT";
              break;
          case 2:
              answer="SUN";
              break;
          case 3:
              answer="MON";
              break;
          case 4:
              answer="TUE";
              break;
          case 5:
              answer="WED";
              break;
          case 6:
              answer="THU";
              break;
      }
      return answer;
  }
}

Best solution

    public String getDayName(int month, int day)
    {
        Calendar cal = new Calendar.Builder().setCalendarType("iso8601")
                        .setDate(2016, month - 1, day).build();
        return cal.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.SHORT, new Locale("ko-KR")).toUpperCase();
    }
source: https://programmers.co.kr/learn/courses/30/lessons/12901?language=java