문제
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"를 반환하세요.
제한조건
- 2016년은 윤년입니다.
- 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)
푼제풀이
- 1월 1일을 기준으로 삼았을 때, a월 b일의 일수를 계산한다. (ex. 1월 1일은 1일 -> 5월 25일은 146일)
- 위 과정을 수행하기 위해 convertMonth라는 메소드를 만들고 switch문을 이용해 전월의 말일 값을 구한다.
- convertMonth를 통해 알아낸 전월의 말일값에 b를 더해 a월 b일의 일수를 추출한다.
- 3번에서 알아낸 값에 숫자 7을 나누어 나머지 값을 구한다.
- 나머지값을 이용해 a월 b일의 요일을 구한다.
- 결과값을 반환.
public String solution(int a, int b) {
a = convertMonth(a);
int today = a + b;
int week = 7;
String result = "";
switch(today % week) {
case 1:
result = "FRI";
break;
case 2:
result = "SAT";
break;
case 3:
result = "SUN";
break;
case 4:
result = "MON";
break;
case 5:
result = "TUE";
break;
case 6:
result = "WED";
break;
case 0:
result = "THU";
}
return result;
}
public int convertMonth(int month) {
int result = 0;
switch(month) {
case 12:
result += 30;
case 11:
result += 31;
case 10:
result += 30;
case 9:
result += 31;
case 8:
result += 31;
case 7:
result += 30;
case 6:
result += 31;
case 5:
result += 30;
case 4:
result += 31;
case 3:
result += 29;
case 2:
result += 31;
case 1:
result += 0;
}
return result;
}
'코딩 문제' 카테고리의 다른 글
[프로그래머스 level 2] 오픈채팅방 - Java (0) | 2021.12.13 |
---|---|
[프로그래머스 level 2] 124나라의 숫자 - Java (0) | 2021.11.21 |
[프로그래머스 level 2] 기능개발 - Java (0) | 2021.11.21 |
[프로그래머스 level 2] 스킬트리 - Java (0) | 2021.11.21 |
[프로그래머스 level 1] 실패율 - Java (0) | 2021.11.01 |