프로그래머스에서 본 예제를 자바로 구현해봤습니다. 더 좋은 풀이 있으면 공유하시지요..
1. 문제
2016년 1월 1일은 금요일입니다. 2016년 A월 B일은 무슨 요일일까요? 두 수 A,B를 입력받아 A월 B일이 무슨 요일인지 출력하는 getDayName 함수를 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각
SUN,MON,TUE,WED,THU,FRI,SAT
를 출력해주면 됩니다. 예를 들어 A=5, B=24가 입력된다면 5월 24일은 화요일이므로 TUE를 반환하면 됩니다.
2. 코드
package Test;
public class DayName {
public static void main(String[] args) {
int m = 9;
int n = 3;
DayName dn = new DayName();
System.out.println(dn.dayName(m, n));
}
private String dayName(int m, int n) {
int days = 0;
if (m > 1) {
for (int inx = 1; inx < m; inx++) {
days += getMonthDay(inx);
}
}
days += n;
int daysOffset = days % 7;
switch (daysOffset) {
case 1:
return "FRI";
case 2:
return "SAT";
case 3:
return "SUN";
case 4:
return "MON";
case 5:
return "TUE";
case 6:
return "WED";
default:
return "THU";
}
}
private int getMonthDay(int m) {
if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
return 31;
else if (m == 2)
return 29;
else
return 30;
}
}