문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/12901
해결 방법
- 우선 패턴을 확인해 보자.
요일은 7개가 있으니, 7일마다 돌아올 것이다.
그렇다면 기준이 되는 1월 1일로부터 몇일이 지났는지 보면 알 수 있지 않을까?-- 우선 100일이 지났다고 생각해 보자.
100일이 지났다는 것은 7일씩 14번하고 2일이 더 지났다고 볼 수 있다.
요일은 7일 주기이므로, 요일만 따졌을 때 1월 1일로부터 2일 지났다고 볼 수 있다. 따라서 일요일이라고 할 수 있다.
-- 예제에 나와있는 5월 24일을 생각해 보자.
5월 24일은 1월 1일로부터 몇일이 지났는가?
-> 1월이 모두 지났고, 2월이 모두 지났으며, 3, 4월이 모두 지났다.
또한 5월은 24일이 지났다.
따라서 각 1월, 2월, 3월, 4월의 날짜와 24일 더하면 된다.
총 몇일이 지났는지만 안다면 위의 예시와 같이 쉽게 구할 수 있다.
class Solution {
public String solution(int a, int b) {
int days = 0;
for(int i=1;i<a;i++){
if(i==2) days+=29; //2월은 윤달
else if(i==4||i==6||i==9||i==11){
days+=30;
}
else{
days+=31;
}
}
days+=b; //나머지 일수 더하기
int remain = days%7; //나머지 구하기
if(remain==1){
return "FRI";
} else if(remain==2){
return "SAT";
} else if(remain==3){
return "SUN";
}else if(remain==4){
return "MON";
}else if(remain==5){
return "TUE";
}else if(remain==6){
return "WED";
}else{
return "THU";
}
}
}