day[(totalDate % 7) - 1]
(인덱스가 0부터 시작하니까 1을 빼줌)로 요일 찾기class Solution {
public String solution(int a, int b) {
String answer = "";
String[] day = {"FRI", "SAT", "SUN", "MON", "TUE", "WED", "THU"};
int[] date = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int totalDate = 0;
for (int i = 0; i < a - 1; i++) {
totalDate+=date[i];
}
totalDate += b - 1;
answer = day[totalDate % 7];
return answer;
}
}
처음에는 생각했던 대로
totalDate += b;
amswer = day[(totalDate % 7) - 1];
을 사용해서 제출했으나 몇몇 케이스에서 런타임 에러가 발생했다.
배열안에서 계산 과정이 이뤄져 런타임 에러가 발생하는 것 같아서 변수에서 먼저 1을 빼주는 코드로 변경했다.
totalDate += b - 1;
amswer = day[totalDate % 7];
import java.time.*;
class Solution {
public String solution(int a, int b) {
return LocalDate.of(2016, a, b).getDayOfWeek().toString().substring(0, 3);
}
}
Java에서 날짜를 표현할 때 사용하는 클래스이다.
예전에는 Calender나 Date 클래스로 시간/날짜를 표현했지만 여러 문제점이 발견되었고 Java8에서 문제를 해결하기 위해 LocalDate, LocalTime, LocalDateTime 클래스가 생겼다.
사용법
// 컴퓨터의 현재 날짜 정보
LocalDate currentDate = LocalDate.now(); // 2022-03-12
// 내가 지정한 날짜
LocalDate myDate = LocalDate.of(int year, int month, int day); // 년, 월, 일
// 요일 나타내기
getDateOfWeek(); // MONDAY, THUSEDAY, ....
다른 메소드도 많지만, 이 문제에 사용된 메소드만 나열했다.
// 2016년 a월 b일 요일 가져오기
LocalDate.of(2016, a, b).getDayOfWeek()