[PROG] 12901 2016년 달력(Calendar)

호호빵·2022년 10월 24일
0

Algorithm

목록 보기
38/46

문제

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


나의 풀이

- 2016년 1월 1일은 금요일
- 해당 하는 전 달 수만큼 날짜들을 더하고, 구하는 일만큼 더한 수를 7로 나눠 나머지만큼의 index의 값을 도출

public String solution(int a, int b) {
        
        int ans = 0;
        int[] arr = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
        String[] day = new String[] {"THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED"};

        for (int i = 0; i < a-1; i++) {
            ans += arr[i];
        }
        ans = ans + b;


        return day[ans%7];
    }
  • 라이브러리를 사용하는 풀이도 있을 거 같았지만 우선적으로 구현해보았고
    시간초과도 걸리지 않았다.

라이브러리 풀이

import java.util.Calendar;

class Solution {
    public String solution(int a, int b) {

        Calendar cal = Calendar.getInstance();
        cal.set(2016, a-1, b);

        String[] day = new String[] {"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"};
        int date = cal.get(Calendar.DAY_OF_WEEK) - 1;

        return day[date];
    }
}
  • Calendar 라이브러리를 통해 손쉽게 구할 수 있다.
  • 문제에서 제시한 2016년 1월 1일이 금요일이라는 조건이 실제 달력과 같은 조건이라 가능
  • 다르다고 해도 date 값을 조정해주면 될 것 같다.


Calendar 클래스

  • 추상 클래스이기 때문에 직접 new 하여 객체 생성이 불가하고, Calendar.getInstance() 메소드를 이용하거나 Calendar 클래스를 상속받는 GregorianCalendar 클래스를 이용하여 객체를 생성할 수 있다.

cal.set(2016, 5, 10)    // 현재 날짜를 2016년 4월 10일로 설정
Calendar.DAY_OF_WEEK	// 현재 요일(일요일:1 ,토요일: 7) 가져오기



Calendar 클래스

profile
하루에 한 개념씩

0개의 댓글