본문 바로가기
알고리즘

[프로그래머스] 2016년 [Java/자바]

by irerin07 2019. 9. 27.
728x90

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

코드:https://github.com/irerin07/AlgorithmStudyBaek/blob/master/src/programmers_lvl_1/programmers12901.java

 

public class programmers12901 {
    public static void main(String[] args) {
        int a = 1;
        int b = 7;
        System.out.println(solution(a,b));
    }
    public static String solution(int a, int b) {
        String answer = "";
        int[] month = {31, 29, 31, 30, 31, 30 ,31, 31, 30, 31, 30, 31};
        String[] days = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
        int totaldays = 0;
        for(int i = 0; i < a-1; i++){
            totaldays+=(month[i]);

        }
        totaldays += (b-1);
        answer = days[totaldays%7];

        return answer;
    }
}

 

2016년의 월/일을 입력하면 무슨 요일인지 출력하는 문제

 

각 달의 일수를 배열로 저장하고

1월 1일이 금요일이었기 때문에 "금, 토, 일, 월, 화, 수, 목" 순서로 배열로 저장했다.

 

for문을 입력받은 개월 수(a) - 1 만큼 돌려 총 일수를 더하고

총 일수에 입력받은 일수(b)-1 만큼을 더해준 뒤

%연산을 사용해 요일을 구하는 식으로 풀었다.

 

 

코드에서 (b-1)을 해준 이유는 저렇게 해주지 않으면 1월 1일을 하루 지난것으로 연산하기 때문에 결과값이 하루 더 계산되어서 나오게 된다.

예를 들어 a에 5, b에 24를 입력한 경우 실제 답은 TUE가 나와야 하지만 b-1을 해주지 않으면 그 하루 뒤인 WED가 나오게 된다.

728x90