반응형
- 첫 풀이 및 정답풀이
처음 문제의 접근을 달력을 그려보며 파악하긴 했지만, 매 달이 며칠까지 있는지를 생각해내지 못해 고민을 좀 했다.
매 달 며칠인지는 우리가 어려서부터 손을 사용해 많이 세 보았듯이, 정해진 일수가 존재한다.
이후 문제에서 1월 1일이 금요일이라고 주어졌기 때문에 7일까지 토, 일, 월, 화, 수 순으로 반복되며, 이를 활용해 예제를 본다면 5월의 이전인 1~4월까지의 총 일수와 5월의 24일을 더해주어 7로 나눈 나머지에 따라 요일을 구할 수 있었다. 단, 필자의 풀이 방식에서는 7일의 배수인 경우 나머지가 0이 나오는데, 이는 모두 목요일에 해당된다는 점만 주의하면 된다.
class Solution {
public String solution(int a, int b) {
// 1. 나눈 나머지에 따른 요일 저장 배열.
String days[] = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
// 2. 매 달의 일 수, 윤달이므로 2월은 29일까지 존재.
int month[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
// 3. 총 일수의 합
int sum = 0;
// 4. a 이전 달 까지의 일수를 모두 더해준다.
for(int i =1;i<a;i++){
sum+=month[i];
}
// 5. a달의 b일을 더해준다.
sum+=b;
// 6. 7의 배수인 경우, 모두 목요일이다.
if(sum % 7 == 0) return days[6];
// 7. 나머지는 인덱스에 따라 요일 출력, 0번 인덱스부터 시작하므로 -1을 해준다.
return days[(sum % 7)-1];
}
}
반응형