[プログラマー][java]2016年


質問リンク-https://programmers.co.kr/learn/courses/30/lessons/12901
解決策
  • まず図案を確認します.
    週に7回、7日に1回帰ってきます.
    では、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";
            }
        }
    }