문제 이름:
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;
}
}
코드를 살펴보면
- LocalDate date = LocalDate.of(년, 월, 일)을 해줘서 해당 날짜를 date에 받는다.
- DayOfWeek dayofweek = date.getDayOfWeek()를 사용해서 dayofweek에
요일로 표현하는 DayOfWeek Enum을 넣는다. (요일별 숫자, 텍스트) - int타입의 week에 date에 들어가있는 날짜에 해당하는 요일별 숫자를 넣는다.
월요일 = 1 ~~ 일요일 = 7 - 반복문을 통해서 i를 1 ~ 7까지 반복해서 week가 i랑 같으면answer에 해당 날짜의 요일을
영어로 짧게 대문자로 넣는다. ( 요일이 토요일이면 : "SAT" )
'프로그래머스 문제' 카테고리의 다른 글
프로그래머스 Java 소수 만들기 (0) | 2024.07.23 |
---|---|
프로그래머스 JAVA (모의고사) (3) | 2024.07.22 |
프로그래머스 Java (푸드 파이트 대회) (0) | 2024.07.18 |
프로그래머스 Java 콜라 문제 (0) | 2024.07.18 |
프로그래머스 JAVA( 명예의 전당 (1) ) (0) | 2024.07.18 |