Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

[프로그래머스] 2016년 본문

코테준비

[프로그래머스] 2016년

Seung__ 2021. 12. 11. 11:06

1. 문제


2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요?

두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요.

요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다.

 

예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.

 

제한 조건

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

입출력 예

a b result
5 24 "TUE"

 

 

2. 문제 정리


  • 1월 1일이 금요일 일 때, m월 d일의 요일은???
  • 1/1 부터 m/d까지 일수를 계산하고 7로 나누었을 때의 나머지를 확인하면 된다.
  • 구현해야 할 기능
    • m월d일 까지 일 수 계산
    • 1월1일과의 차이를 7로 나누었을 때의 나머지의 경우에 따라 요일 반환.

 

 

3. 코드


class Solution {
    public String solution(int m, int d) {

        int days = 0;

        for (int i=1; i<m; i++){
            days += getDays(i);
        }
        days += d;

        return  getDay(days);
    }

    public int getDays(int m){
        switch (m){
            case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
            case 2: return 29;
            case 4: case 6: case 9: case 11: return 30;
        }
        return 0;
    }

    public String getDay(int days){
        int delta = (days - 1) % 7;

        switch (delta){
            case 0: return "FRI";
            case 1: return "SAT";
            case 2: return "SUN";
            case 3: return "MON";
            case 4: return "TUE";
            case 5: return "WED";
            case 6: return "THU";
        }
        return "";
    }
}

 

 

4. GitHub : 211211 2016년


 

GitHub - bsh6463/coding_test

Contribute to bsh6463/coding_test development by creating an account on GitHub.

github.com

 

Comments