[프로그래머스] 2016년

당당·2023년 5월 15일
0

프로그래머스

목록 보기
98/245

https://school.programmers.co.kr/learn/courses/30/lessons/12901

📔문제

2016년 1월 1일은 금요일입니다. 2016년 ab일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 ab일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.


🚫제한사항

2016년은 윤년입니다.
2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다)


📝입출력 예

abresult
524"TUE"

🧮알고리즘 분류

  • 문자열
  • 구현

📃소스 코드

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        int start=0;
        switch(a){
            case 1: case 4: case 7:
                start=6;
                break;
            case 2: case 8:
                start=2;
                break;
            case 3: case 11 :
                start=3;
                break;
            case 5 :
                start=1;
                break;
            case 6 :
                start=4;
                break;
            case 9: case 12:
                start=5;
                break;
            case 10:
                start=7;
                break;
        }
        for(int i=0;i<=4;i++){
            if((1+7*i)<=b && b<(1+7*(i+1))){
                int distance=b-(1+7*i);
                answer=week(start+distance);
            }
        }
        return answer;
    }
    
    public String week(int n){
        String word="";
        if(n>=8){
            n=n-7;
        }
        switch(n){
            case 1:
                word="SUN";
                break;
            case 2:
                word="MON";
                break;
            case 3:
                word="TUE";
                break;
            case 4:
                word="WED";
                break;
            case 5:
                word="THU";
                break;
            case 6:
                word="FRI";
                break;
            case 7:
                word="SAT";
                break;
        }
        return word;
    }
}

📰출력 결과


📂고찰

처음에 start+distance가 8을 넘을 경우를 생각하지 못했다.
그래서 8을넘으면 7을 빼주도록 하여 해결하였다.

profile
MySQL DBA 신입 지원

0개의 댓글