[프로그래머스][java] 2016년

김현진·2022년 1월 15일
0

코테준비

목록 보기
10/22

문제 링크 - 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";
        }
    }
} 

0개의 댓글