Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
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
Tags more
Archives
Today
Total
관리 메뉴

luke

[프로그래머스] - 2016년 (Java/자바) 본문

알고리즘문제/프로그래머스(Java)

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

luke-king 2025. 8. 21. 20:35

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

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


class Solution {
    public String solution(int a, int b) {
       
        String[] day = {"FRI", "SAT","SUN", "MON", "TUE", "WED", "THU"};
        int[] month = {31,29,31,30,31,30,31,31,30,31};
        
        int answer = 0;
        for(int i = 0; i < a - 1; i++){
            answer += month[i];
        }
        
        answer += b - 1;
        
        return day[answer % 7];
    }
}

이번 문제는 프로그래머스 "2016년" 문제다.

달력 문제 같은 느낌이라 바로 풀이해보겠다.

 

1.  일요일부터 토요일까지 각각의 값들을 배열로 만들어 준다. 여기서 혹시나 그대로 SUN ~ SAT로 하면 런타임 에러가 난다.

그리고 문제에서 이미 1월 1일은 금요일이라고 언급을 했기에 FRI부터 값 세팅을 해준다.

 

2. 1~12월까지의 일 을 month 배열에 값을 넣어준다.

 

3. answer 값은 총 일 을 구하기 위해 만들어 준다.

 

4.  for문을 사용해 각 달마다 일 수 를 더해줘 입력된 a달 전까지 일 수 합을 구해준다. 여기서

 

5. 다음으로 a 달 전 까지 구해 줬으니 b일 값을 answer값과 더해준다. 여기서 -1을 해주는 이유는 쉽게 설명하자면 우리의 배열 값들은 인덱스 0부터 시작한다. 그래서 1일 입력이 되었을 때 -1을 한다면 0이 나오는데 그때 FRI가 출력되는 것이다.

 

6. 마지막으로 day [] 배열의 answer % 7 나머지 값 이 나온다면 그에 맞는 요일이 나온다.