JAVA/Algorithm

[프로그래머스/java] 2016년

nang. 2020. 10. 23. 01:12
반응형
SMALL

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

 

코딩테스트 연습 - 2016년

2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까

programmers.co.kr

 

  • 해당 날짜 바로 전 달(month)까지의 날짜들 수를 세고
  • 해당 날짜의 일(day) 만큼 더해주면 해당 날짜까지의 모든 날짜의 수
  • 요일 구하기
    • 모든 날짜의 수 % 7
    • 나머지에 따라 요일이 정해짐

 

class Solution {
    public String solution(int a, int b) {
        String answer = "";
        
        // 2016년 1월 1일은 금요일이라고 했으니까 금요일부터 시작해보자
        
        int month[] = {31,29,31,30,31,30,31,31,30,31,30,31}; // 1월부터 월별 날짜 수
        String[] weekDay =  {"THU","FRI","SAT","SUN","MON","TUE","WED"}; // 요일 문자
        int day = 0;
        
        // 이제 뭘할거냐면 입력받은 날짜까지의 day수(날짜들 수)를 계산할건데
        // 일단 만약에 5월이면 4월까지의 날짜를 쭉 세줌 (달별 날짜수는 정해져있으니까 먼저 계산해주기)
        for(int i = 0; i < a - 1; i++) { // 월-1 (일단 4월까지 세니까)
            day = day + month[i]; // 31 + 29 + 31 + 30
        }
        
        // 이제 5월 24일이면 24를 더해주면 5월 24일까지의 날짜 수가 나옴
        day = day + b;
        
        // 이제 요일을 구하면 되는데 요일은 (전체 날짜수 % 7) 했을 때의 나머지
        // 목0 금1 토2 일3 월4 화5 수6
        answer = weekDay[day%7];
        
        return answer;
    }
}
반응형
LIST