본문 바로가기

프로그래머스 문제

[프로그래머스] (Java) 2016년

문제 이름:
2016년

 

문제설명

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

예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요.


 

 

문제를 보자마자 날짜를 구해서 요일을 구해야겠다고 생각했다.

날짜를 어떻게 하면 구할 수 있는지 구글링을 해봤는데 LocalDate라는 클래스가 있다는 걸 알았다.

LocalDate가 무엇인가 하면  아래 링크로 가면 내가 찾아본 것을 정리해둔게 있다.

https://danny-blog.tistory.com/13

 

Java LocalDate, LocalDateTime 날짜 요일

Java 8 이후에 사용되는 날짜 클래스 LocalDate           import java.time.LocalDate날짜를 나타내는 클래스LocalDate date = LocalDate.of(년 , 월,  일) LocalDateTime날짜와 시간을 나타내는 클래스LocalDateTime dateti

danny-blog.tistory.com


코드 풀이

import java.time.LocalDate;
import java.time.DayOfWeek;
import java.time.format.TextStyle;
import java.util.Locale;


class Solution {
    public String solution(int a, int b) {
        String answer = "";
        
        LocalDate date = LocalDate.of(2016,a,b);
        
        DayOfWeek dayofweek = date.getDayOfWeek();
        
        int week = dayofweek.getValue();
        
        for(int i = 1; i <= 7; i++)  {
            if(week == i){
                answer = dayofweek.getDisplayName(TextStyle.SHORT, Locale.US).toUpperCase();
            }
        }
        return answer;
    }
}

 

코드를 살펴보면 

  1. LocalDate date = LocalDate.of(년, 월, 일)을 해줘서 해당 날짜를 date에 받는다.
  2.  DayOfWeek dayofweek = date.getDayOfWeek()를 사용해서 dayofweek에
    요일로 표현하는 DayOfWeek Enum을 넣는다. (요일별 숫자, 텍스트)
  3. int타입의 week에 date에 들어가있는 날짜에 해당하는 요일별 숫자를 넣는다.
    월요일 = 1 ~~ 일요일 = 7
  4. 반복문을 통해서 i를 1 ~ 7까지 반복해서 week가 i랑 같으면answer에 해당 날짜의 요일을
    영어로 짧게 대문자로 넣는다.    ( 요일이 토요일이면 : "SAT" )