[ 문제 설명 ]
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일같은 날짜는 주어지지 않습니다)
[ 입출력 예 ]
| a | b | result |
| 5 | 24 | "TUE" |
class Solution {
public String solution (int a, int b) {
String answer = "";
String day[] = {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};
int totalDay = 0;
for(int i = 1; i < a; i++) {
if (i < 8) { // 1~7월은 홀수 달이 31일까지 있고, 짝수 달이 30일까지 있음
if(i == 2)
totalDay += 29;
else if(i % 2 != 0)
totalDay += 31;
else
totalDay += 30;
}
else { // 8~12월은 홀수 달이 30일까지 있고, 짝수 달이 30일까지 있음
if (i % 2 != 0)
totalDay += 30;
else
totalDay += 31;
}
}
totalDay += b;
answer = day[totalDay % 7];
return answer;
}
}
먼저, 입력받은 전 달까지의 일 수와 입력받은 달의 일 수를 더하는 방식으로 총 일 수를 구했습니다.
예를 들어, 5월 24일을 입력받았다면 4월까지의 일 수에 24일을 더했습니다.
총 일 수를 구한 후, 일주일이 7일이기 때문에 7로 나눈 나머지로 요일을 판별했습니다.
1월 1일이 금요일 이기 때문에, 7의 배수인 7일, 14일, 21일, ... 은 목요일 입니다.
따라서, 요일을 저장한 배열의 인덱스와 총 일 수를 나눈 나머지를 맞춰주기 위해, 목요일을 0번 인덱스로 두어 배열을 선언했습니다.
'Algorithm > 백준+프로그래머스+SWEA+정올+구름' 카테고리의 다른 글
| 수박수박수박수박수박수? (0) | 2021.04.16 |
|---|---|
| 서울에서 김서방 찾기 (0) | 2021.04.16 |
| 같은 숫자는 싫어 (0) | 2021.04.16 |
| K번째수 (0) | 2021.04.16 |
| 가운데 글자 가져오기 (0) | 2021.04.16 |