프로그래머스에서 본 예제를 자바로 구현해봤습니다. 더 좋은 풀이 있으면 공유하시지요..

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. 코드

  1. package Test;
  2.  
  3. public class DayName {
  4. public static void main(String[] args) {
  5. int m = 9;
  6. int n = 3;
  7. DayName dn = new DayName();
  8. System.out.println(dn.dayName(m, n));
  9. }
  10.  
  11. private String dayName(int m, int n) {
  12. int days = 0;
  13.  
  14. if (m > 1) {
  15. for (int inx = 1; inx < m; inx++) {
  16. days += getMonthDay(inx);
  17. }
  18. }
  19.  
  20. days += n;
  21. int daysOffset = days % 7;
  22.  
  23. switch (daysOffset) {
  24. case 1:
  25. return "FRI";
  26. case 2:
  27. return "SAT";
  28. case 3:
  29. return "SUN";
  30. case 4:
  31. return "MON";
  32. case 5:
  33. return "TUE";
  34. case 6:
  35. return "WED";
  36. default:
  37. return "THU";
  38. }
  39. }
  40.  
  41. private int getMonthDay(int m) {
  42. if (m == 1 || m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)
  43. return 31;
  44. else if (m == 2)
  45. return 29;
  46. else
  47. return 30;
  48. }
  49. }