[프로그래머스,Level 1] 2016년(JAVA 구현)
코테/프로그래머스(Programmers)

[프로그래머스,Level 1] 2016년(JAVA 구현)

반응형

- 첫 풀이 및 정답풀이

  처음 문제의 접근을 달력을 그려보며 파악하긴 했지만, 매 달이 며칠까지 있는지를 생각해내지 못해 고민을 좀 했다.

매 달 며칠인지는 우리가 어려서부터 손을 사용해 많이 세 보았듯이, 정해진 일수가 존재한다.

 

  이후 문제에서 1월 1일이 금요일이라고 주어졌기 때문에 7일까지 토, 일, 월, 화, 수 순으로 반복되며, 이를 활용해 예제를 본다면 5월의 이전인 1~4월까지의 총 일수와 5월의 24일을 더해주어 7로 나눈 나머지에 따라 요일을 구할 수 있었다. 단, 필자의 풀이 방식에서는 7일의 배수인 경우 나머지가 0이 나오는데, 이는 모두 목요일에 해당된다는 점만 주의하면 된다.

 

class Solution {
    public String solution(int a, int b) {        
        
        // 1. 나눈 나머지에 따른 요일 저장 배열.
        String days[] = {"FRI","SAT","SUN","MON","TUE","WED","THU"};
        // 2. 매 달의 일 수, 윤달이므로 2월은 29일까지 존재.
        int month[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
       
        // 3. 총 일수의 합
        int sum = 0;
        
        // 4. a 이전 달 까지의 일수를 모두 더해준다.
        for(int i =1;i<a;i++){
            sum+=month[i];
        }
        // 5. a달의 b일을 더해준다.
        sum+=b;
        
        // 6. 7의 배수인 경우, 모두 목요일이다.
        if(sum % 7 == 0) return days[6];
        // 7. 나머지는 인덱스에 따라 요일 출력, 0번 인덱스부터 시작하므로 -1을 해준다.
        return days[(sum % 7)-1];
    }
}

 

 

반응형