문제 :

풀이코드 :

풀이1 > Calendar와 switch-case를 이용하여 풀이

import java.util.Calendar;

class Solution {
    public String solution(int a, int b) {
        String day = "";
        Calendar cal = Calendar.getInstance();
        
        // 년도를 2016년으로 세팅
        cal.set(Calendar.YEAR, 2016);
        
        // Calendar.MONTH의 1월은 0이기 때문에 입력받는 달 a에서 1을 빼주고 세팅
        cal.set(Calendar.MONTH, a-1);
        
        // 일을 b로 세팅
        cal.set(Calendar.DATE, b);
        
        // Calendar.DAY_OF_WEEK의 일요일은 1로 시작하기 때문에 요일을 dayNum으로 세팅
        int dayNum = cal.get(Calendar.DAY_OF_WEEK);
        
        // Calendar.DAY_OF_WEEK의 요일은 1부터 시작하기 때문에 case 1부터 시작
        switch(dayNum){
            case 1:
                day="SUN";
                break;
            case 2:
                day="MON";
                break;
            case 3:
                day="TUE";
                break;
            case 4:
                day="WED";
                break;
            case 5:
                day="THU";
                break;
            case 6:
                day="FRI";
                break;
            case 7:
                day="SAT";
                break;
        }
        return day;
    }
}

풀이2 > Enum을 이용한 풀이

class Solution {
    public String solution(int month, int day) {
        int sumDays = 0;
		for(int i = 0 ; i < month; i++)
			sumDays += getDayOfMonth(i+1);
		sumDays -= (getDayOfMonth(month)-day);
        int idx = sumDays%7-1 < 0? 6:sumDays%7-1;
        return DAY.values()[idx].name();
    }
	public static int getDayOfMonth(int month) {
		return Month.values()[month-1].day;
	}
	enum DAY{
		FRI,SAT,SUN,MON,TUE,WED,THU
	}
	enum Month{
		JEN(1,31),
		FEB(2,29),
		MAR(3,31),
		APR(4,30),
		MAY(5,31),
		JUN(6,30),
		JUL(7,31),
		AUG(8,31),
		SEP(9,30),
		OCT(10,31),
		NOV(11,30),
		DEC(12,31);
		private int month;
		private int day;
		Month(int month,int day){
			this.month = month;
			this.day = day;
		}
		public int getMonth() {
			return month;
		}
		public void setMonth(int month) {
			this.month = month;
		}
		public int getDay() {
			return day;
		}
		public void setDay(int day) {
			this.day = day;
		}
	}
}

풀이3 > 배열과 반복문을 이용한 풀이

class Solution {
    public String solution(int a, int b) {
        String[] day =new String[] { "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT",};
        int[] date =new int[] {0,31,29,31,30,31,30,31,31,30,31,30,31};
        int count = 0;
        for(int i = 1; i < a; i++){
            count += date[i];
        }
        count += b;
        return day[(count + 4) % 7];
    }
}
profile
항해중인 우당탕탕 코린이

0개의 댓글